Using 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.