[csswg-drafts] [css-color-4][css-color-3] Computed value of the color property

frivoal has just created a new issue for 
https://github.com/w3c/csswg-drafts:

== [css-color-4][css-color-3] Computed value of the color property ==
[The css-color-4 definition of the computed value of the color 
property](https://drafts.csswg.org/css-color/#propdef-color) says :

> Computed value:       an RGBA color

That doesn't sound right:

* This is not entirely clear what is meant by that. The simplest 
interpretation is that the value should be computed to the `rgba()` 
function, but maybe something else is intended.
* If computing to `rgba()` is intended, this appears to contradicts 
[css-color-3](https://drafts.csswg.org/css-color-3/#color0). The rule 
there is phrased in a somewhat ambiguous way, but seems to imply that 
basic colors, hex colors, and `rgb()` colors should be computed to the
 six digit hex value or `rgb()` functional value, while other 
notations should be preserved as specified.
* Browsers today (checked Chrome, Firefox, Safari, Edge, Presto) 
interoperably return `rgb()` (not `rgba()`) as the computed value of 
hex colors or named colors when exposing it through getComputedStyle. 
In contradiction of css-color-3, All also do so for `hsl()` colors. 
And but all but Edge also for `rgba()` and `hsla()` colors with an 
alpha of 1 (Edge compute both to `rgba()`).
* How to convert `color()` colors to `rgba()` is non trivial and 
lossy. It needs to happen eventually to be able to paint, but computed
 value time seems wrong.

If the level 4 text is meant to be different from the level 3, we 
should errata level 3, and be clearer about what exactly is meant. But
 given the compat data and the newer color functions, neither "always 
`rgba()`" nor “as specified, except but #rrggbb `rgb()` and named 
colors” seems to be the right answer. I think we should specify what 
is already inter-operable (and see if Edge is willing to join everyone
 else on computing `rgba(*,*,*,1)` and `hsla(*,*,*,1)` to `rgb()`.

The new color functions that do not yet have a compat baggage, so we 
should probably be clear before they get one. We could keep them as 
specified, or maybe convert them to a base notation: `gray()`and 
`lch()` -> `lab()`, `hwb()` and `hwb()`-> `color()`, omit the alpha 
component when it is 1.

As for the comma-less version of rgb() and hsl(), we also should 
decide if the compute to the legacy syntax (with commas), preseve them
 as written, or compute to `color()`...

Please view or discuss this issue at 
https://github.com/w3c/csswg-drafts/issues/742 using your GitHub 
account

Received on Monday, 21 November 2016 01:35:23 UTC