W3C home > Mailing lists > Public > www-style@w3.org > January 2015

Re: Extended shorthand for hex colours

From: Tab Atkins Jr. <jackalmage@gmail.com>
Date: Thu, 22 Jan 2015 10:54:20 -0800
Message-ID: <CAAWBYDD8RPU6PnbXJ8dWX2ozYeb4kW4mp_6eyyZZxU2fQWMaBg@mail.gmail.com>
To: Ryan Williams <email@ryanwilliams.co.uk>
Cc: "www-style@w3.org" <www-style@w3.org>
On Wed, Jan 14, 2015 at 11:59 PM, Ryan Williams
<email@ryanwilliams.co.uk> wrote:
> Hexadecimal notation is commonly used for defining colours in CSS, but the
> shorthand is lacking. Right now we can use #CCC which would be expanded to
> #CCCCCC, but that's pretty much it.
>
> Wouldn't it be nice if we built upon the principles of the existing
> shorthand -- repeating the defined characters -- to provide more options?
>
> For example:
>
> 1. #C expands to #CCCCCC
> 2. #C3 expands to #C3C3C3
> 3. #CCC expands to #CCCCCC
>
> These two extra shorthand formats would allow a lot of hex colours to be
> typed and/or transmitted across networks more efficiently.
>
> I don't think it'd make sense to allow for four- or five-character
> shorthand, as the defined characters could not be repeated in full.

As other people have said, this has been proposed in the past.  It's
also been rejected in the past - the only expansion to the hex syntax
we accepted was to add alpha to it, written as a 4/8 digit hex number.

As Simon says, the WG is generally of the opinion that expanding
2-digit hex in the way you suggest is confusing, because it expands in
a different way than 3/4 digit hex does.  The single-digit hex doesn't
suffer from this problem, but it's also less useful, only allowing you
to specify 16 shades of gray, and save two characters doing so.

That said, the underlying purpose of 1/2 digit hex - making it easier
to specify grayscale without repetition - has been addressed, with a
gray() function in Colors 4.
<http://dev.w3.org/csswg/css-color/#grays>  You can provide a
percentage (0% to 100%) or decimal number (0 to 255) to define a gray,
without having to repeat yourself (as in rgb()) or specify additional
junk information (as in hsl()).  It also allows specifying alpha,
which is something that can't be done with a grayscale hex notation
(as it would clash with the 3-digit hex notation, not to mention
having an even more confusing expansion rule).

~TJ
Received on Thursday, 22 January 2015 18:55:08 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 22:51:56 UTC