- From: Miriam Suzanne via GitHub <sysbot+gh@w3.org>
- Date: Tue, 20 Sep 2022 21:42:14 +0000
- To: public-css-archive@w3.org
mirisuzanne has just created a new issue for https://github.com/w3c/csswg-drafts: == [css-color-5] Define the behavior of missing channels in the relative color syntax == The [relative color syntax in level 5](https://drafts.csswg.org/css-color-5/#relative-colors) allows existing colors to be modified using the color functions. For example, we can start with a base color `green`, and manipulate it in `lch` space, by performing calculations on the `l`, `c`, and `h` channels: ```css /* example from the spec */ html { --color: green; } .foo { --darker-accent: lch(from var(--color) calc(l / 2) c h); } ``` This syntax predates the specification of [missing color components in level 4](https://drafts.csswg.org/css-color-4/#missing), represented by the `none` keyword. While the addition of `none` to the function syntax has been ported into level 5, it's not clear how this should interact with the relative color syntax. **What should happen when the base color has a missing component, and the relative syntax performs a calculation on that channel?** ```css html { --color: lch(0.5 0.5 none); } .foo { --complement: lch(from var(--color) l c calc(h + 180deg)); } ``` I see three basic options: 1. **Invalid operation**. This seems like the 'default' if we don't specify something different, since `none` is clearly not a valid number for `calc()`. However, I think it's not a very useful behavior, and we should avoid it if possible. In general, it seems bad to say 'some valid colors will simply break if you adjust them' - especially since `none` can result from internal CSS operations. 2. **Calculate with `0` in place of `none`**. This may be the most obvious choice, since it matches the behavior in other cases where we need a number value for `none`. But the results aren't necessarily useful, especially when the channel is truly powerless. 3. **The result is always `none`**. This was proposed by @nex3 as it maintains the intent of `none` to represent powerless or unimportant channels. Rotating a missing/powerless hue results in a hue that is still missing/powerless. I'd propose that we go with option 3, but I could see arguments for the other approaches. Thoughts? Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/7771 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Tuesday, 20 September 2022 21:42:16 UTC