- From: Guillaume via GitHub <sysbot+gh@w3.org>
- Date: Tue, 15 Nov 2022 14:33:43 +0000
- To: public-css-archive@w3.org
I assume that the consensus is to accept `none` as an argument of `rgba()` and `hsla()` when they are aliases of the modern `rgb()` and `hsl()`, respectively, and that *legacy `rgba()`* or *legacy `hsla()`* are a short and confusing concept/naming for `rgba()` or `hsla()` as aliases of legacy `rgb()` or `hsl()`, that should be removed from the spec (like the link in the definition of [`<color>`](https://drafts.csswg.org/css-color-4/#typedef-color) directing from `<rgba()>` to the definition of *rgba() legacy color syntax*). ```css color: rgb(0, 0, 0, none); /* invalid */ color: rgba(0, 0, 0, none); /* invalid */ color: rgb(0 0 0 / none); /* valid, serializes to rgba(0, 0, 0, 0) */ color: rgba(0 0 0 / none); /* valid, serializes to rgba(0, 0, 0, 0) */ ``` --- Please allow me this additional observation, which is also valid for `<hsla()>`. `<color>` includes both `... | <rgb()> | <rgba()> | ...`, therefore a CSS parser should not recognize `rgba` as a function name alias of `rgb` when matching against `<rgb()>`: an input specified with `rgba(...)` should match `<rgba()>` instead. `<rgba()>` is not defined with a basic syntax therefore `w3c/reffy` only extracts [some prose](https://github.com/w3c/webref/blob/444c84e7c4a73229e86765d6943c58f55676526f/ed/css/css-color.json#L42) and a grammar-driven parser implementation must define it on its side. It cannot define it with `<rgba()> = <rgb()>` because this would require to recognize `rgba` as a function name alias of `rgb`. It might tempting to say that `rgba()` should be defined in prose as a legacy alias for `rgb()` and that `<rgba()>` should be removed from `<color>`, but similarly, `<repeating-*-gradient()>` is not defined with a basic syntax, is clearly not legacy, and is semantically different than the corresponding `<*-gradient()>`. In my opinion, an ideal solution would be to define the arguments of `<rgb()>` and `<rgba()>` with a non-terminal: ``` <rgb-fn-args> = [ [<percentage> | none]{3} [/ [<alpha-value> | none]]? | [<number> | none]{3} [/ [<alpha-value> | none]]? <rgb()> = rgb(<rgb-fn-args>) <rgba()> = rgba(<rgb-fn-args>) ``` `<rgb-fn-args>` could even include `<legacy-rgb-fn-args>`, which would allow `w3c/webref` to remove [`legacyValue` for `<rgb()>`](https://github.com/w3c/webref/blob/444c84e7c4a73229e86765d6943c58f55676526f/ed/css/css-color.json#L75). -- GitHub Notification of comment by cdoublev Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/7900#issuecomment-1315397040 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Tuesday, 15 November 2022 14:33:45 UTC