In CSS there are two main ways of selecting colors. The first is to simply use the color name, like this:
Obviously this is limited. A computer can display millions of different colors, and remembering the names of every single one of them is impossible. And spare a thought for that poor guy whose job it is to come up with the names!
This is why CSS uses hex codes, like this:
I’m sure you’ve all used hex codes before. You probably use a hex color picker to generate your codes. But it’s likely you have no idea what a hex code means or how it’s generated. Learning this is surprisingly easy and satisfying, and once you’ve got your head around it you’ll be able to write your own hex codes without the need for a color picker.
Hex Codes Represent Red, Green and Blue
A computer screen displays a color by combining red light, green light and blue light. 100% red, 100% green and 100% blue produces white. Zero red, zero green and zero blue produces black. In fact, equal levels of red, green and blue, whatever that level may be, will always produce a shade of gray.
The six digits of a hex code are in fact three two-digit numbers, each representing the level of red, green and blue. So
#000100 is zero red, the darkest possible shade of green without being totally black, and zero blue.
#010101, because the three values are all equal, is the darkest possible shade of grey, and
#020202 is the second darkest. And of course
#000000 is black. But what about
#FFFFFF for white – what do the letters mean?
Hex Codes Use The Hexadecimal System to Minimize Length
There are 256 possible shades each of red, green and blue (0 through 255). If we wanted to produce white (the brightest levels of all three colors combined), we’d need to write
#255255255. That’s nine digits long.
Hex codes use the hexadecimal number system to make it possible for 256 numbers to be represented with only two digits. Instead of counting 0 through 10 like our regular decimal number system, it counts 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F and then 10, followed by 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F and then 20. Make sense?
This means that 256 numbers can be represented using only two digits, instead of the 100 that are possible with our decimal number system (0 through 99). So the highest possible two digit number is not 99 but FF (equal to 255). This is why white is
#FFFFFF, pure red is
#FF0000, pure green
#00FF00 and pure blue
Hex Codes Can Be Abbreviated
You may have seen hex codes like
#0F0 or even
#ABC that only use three digits. This is just a shorthand of writing a code which is three pairs of identical digits:
Come Up With Your Own Hex Codes
So now you know how a hex code is generated, it becomes possible to write your own without the need for a color picker. Of course, a color picker is still the easier option for more obscure colors, but for simple combinations like magenta (blue + red,
#F0F), cyan (blue + green,
#0FF) or any shade of grey (examples are
#CCC), knowing how hex codes work saves me a lot of time and will for you too.