Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are there any good reasons for using hex over decimal for RGB colour values in CSS?

Tags:

css

hex

colors

rgb

rgb(255,255,255) notation has been available since CSS1. But #ffffff seems to be vastly more popular.

Obviously it's slightly more compact. I know that hex is more closely related to the underlying bytes, and understand that there would be advantages in carrying out arithmetic on those values, but this isn't something you're going to do with CSS.

Colour values tend to be originated by designers (such as myself) who would never encounter hex notation anywhere else, and are much more familiar with the decimal notation which is the main way of specifying colour in the apps they use -- in fact I have met quite a few who don't realise how a given hex value breaks down into RGB components and assumed it didn't directly relate to the colour at all, like a Pantone colour system reference (eg PMS432).

So, any reason not to use decimal?

like image 287
e100 Avatar asked Jul 23 '09 12:07

e100


People also ask

What is the benefit to using a hex value rather than a name for color usage?

Because they use hexadecimal, and because 255 is the maximum value for a component, every possible color can be expressed using just 6 digits. This system also means that there are a huge range of colors available, because each component can take on any value from 0 to 255.

Should I use hex or RGB CSS?

When it comes to animating colors, working in RGB or HSL is preferable over HEX simply because numbers are easier to edit dynamically.

Is RGB more accurate than hex?

There is no informational difference between RGB and HEX colors; they are simply different ways of communicating the same thing – a red, green, and blue color value.

Why is hex used in RGB?

Note: This also explains why the highest value possible in the RGB system is 255. By using a hexadecimal, or 16-bit number system, the maximum number of colors that can be displayed at any one time is 16 x 16, or 256 colors.


3 Answers

Hex values are easier to copy and paste from your favourite image editor.

RGB values are easier to manipulate with Javascript.

(My favourite Hex colour value is #EDEDED and a site we made for a client involved in motorsport had a background colour of #F1F1F1 :-)

Ed.

like image 71
edeverett Avatar answered Oct 14 '22 16:10

edeverett


It's worth noting that if you want to input an RGBA value, hex notation is not supported; i.e., you can't fake it with #FFFFFFff. As a matter of fact, the alpha value must be a number between 0.0 and 1.0, inclusive. (Check out this page for browser support -- as always, IE is leading the pack here. ;) )

HSL and HSLA color support -- which is very designer friendly -- is also provided with a similar syntax to the RGB() style. If a designer were to use both types of color values in the same stylesheet, they might opt for decimal values over hex codes for consistency.

like image 35
WCWedin Avatar answered Oct 14 '22 17:10

WCWedin


I think it's what you're used to. If you're used to HTML, you'll probably use HEX since it's just been used a lot in HTML. If you're from a design background, using Photoshop/Corel/PaintShopPro etc., then you're likely used to the RGB notation - though, a lot of programs these days incorporate a HEX value field too.

As said, RGBA might be a reason to just go with the RGB notation - consistency.

Though, I think it also depends on the scenario. If you're comfortable with both, you might just switch between them: #fff is a lot easier to type than rgb(255,255,255).

Another question is why people will say #fff instead of White (assuming most browsers support this keyword).

It's all a matter of preference and legibility - if you're maintaining a huge CSS file, being able to look at the colour value and know what colour it is, is a really good advantage. Even more advantageous is using something like LESS or Sass to add a kind of programmability to CSS - allowing constants for example. So instead of saying:

#title { color: #abcdef; }

You might instead do the following with LESS:

@base-color: #abcdef;

#title { color: @base-color; }

Maintaining the CSS becomes less of an issue.

If you're worried about the performance of the browser rendering it's result, then that could also be another factor to your choice.

So in summary, it boils down to:

  • Familiarity
  • Preference
  • Maintainability
  • Performance
like image 27
jamiebarrow Avatar answered Oct 14 '22 16:10

jamiebarrow