# Colors in CSS

Colors can be specified in CSS in a variety of ways:

## Color Keywords

These are used less frequently, but are handy for basic colors like `black`

and `white`

. There are quite a few of these, please consult the MSDN Documentation for a more complete list.

## Hex Codes (RGB)

“Hex” values are so-called because they use hexadecimal, or base-16, to describe the color values for red, green, and blue. Each of the 3 color values is expressed by two hexadecimal digits, from `00`

(no color) to `FF`

(full color), and are written in the order red, green, then blue, after an initial `#`

sign.

Thus `#FF0000`

is red (full red, no green, no blue), `#00FF00`

is green (no red, full green, no blue), `#0000FF`

is blue (no red, no green, full blue). `#00FFFF`

is a blue-green.

Hex values can be abbreviated to only 3 digits if each digit is doubled. So `#FFFFFF`

(white) can be expressed more succinctly as `#FFF`

, and `#000000`

(black) can be expressed as `#000`

. `#FA6198`

, however, cannot be abbreviated without altering the color.

## RGB Color Values

These express exactly the same range of colors as in Hex, but do so using decimal rather than hexadecimal, in this format: `rgb(0,0,0)`

. The first value is red, the second green, the third blue – the same order as with Hex. Each value can range from 0 to 255, which expresses the same number of color steps as 00 to FF in base-16.

FF in base-16 is equivalent to 255 in base-10.

In RGB, `rgb(0,0,0)`

is black, `rgb(255,255,255)`

is white, `rgb(255,0,0)`

is red, etc.

White-space is allowed *inside* the parentheses, so `rgb(255, 0, 0)`

will do just as well.

## RGBa Colors

RGBa works identically to RGB, expect that it takes a 4th value called the “alpha” or “alpha channel” value. This is a value between 0 and 1 which will be used to determine a color’s opacity on the page, with 0 being completely transparent, and 1 being solid. 0.5 or .5 is 50% opacity.

Thus, `rgba(0,0,0,.25)`

is black at 25% opacity and `rgba(255, 255, 255, 0.8)`

is white at 80% opacity.

The alpha value can be in decimal form but cannot use a percentage. When a decimal is used, the leading zero is optional.

## HSL Colors

These use a similar notation to RGB values, but specify colors using hue, saturation, and lightness.

**Hue** is expressed as a degree angle measure, with red being at `0`

, green at `120`

, and blue at `240`

. Note that the degree unit is implied, and that the angle wraps around, so `360`

also refers to red, and `-120`

is the same as `240`

(blue).

**Saturation** is expressed as a percentage, with `100%`

being a fully saturated color, and `0%`

being a shade of gray (no hue).

**Lightness** is also expressed as a percentage, `0%`

being black, and `100%`

being white. `50%`

lightness is the “normal” color range: anything above `50%`

gives a white tint, anything below `50%`

gives a black shade.

As an example, red is `hsl(0, 100%, 50%)`

, which is equivalent to `#FF0000`

.

## HSLa Colors

As with RGBa, HSLa is exactly like HSL for the first 3 values, but takes a 4th alpha-channel value.

Thus, `hsla(240, 100%, 50%, 0.5)`

is a bright blue shown at 50% opacity.

Note that changing the opacity allows whatever colors are “behind” an element to shine through, which can alter the visible color significantly, especially at lower opacities.