On Mon, Mar 10, 2025 at 8:37 PM Mike Taylor <miketa...@chromium.org> wrote:
> Could you please request the privacy, security, enterprise, etc bits in > your chromestatus entry? > Ah, yes. Done. On 3/7/25 7:31 AM, Anders Hartvoll Ruud wrote: > > Contact emails > > andr...@chromium.org > > Explainer > > A var() function can provide a fallback value, in case the referenced > custom property does not exist (or is invalid in some other way): > > .component { > > width: var(--component-width, 100px); > > } > > When custom properties are registered > <https://drafts.css-houdini.org/css-properties-values-api-1/#behavior-of-custom-properties> > with some type (e.g. with @property), the current behavior is to consider > the var() function invalid if the fallback does not match the type of the > property being referenced: > > @property --length { > > syntax: "<length>"; > > inherits: false; > > initial-value: 0px; > > } > > .foo { > > --length: 100px; > > width: var(--length, 50px); /* Valid, width becomes '100px' */ > > } > > .bar { > > --length: 100px; > > width: var(--length, auto); /* Invalid, width becomes 'unset' */ > > } > > As you can see above, this type restriction even applies when the fallback > would not be used (--length is present and valid in both cases). > > This behavior is now seen as a mistake by the CSSWG, and in 10455 > <https://github.com/w3c/csswg-drafts/issues/10455> we resolved to change > it: the fallback is no longer validated against the type of the referenced > property (regardless of whether or not it's used): > > .baz { > > --length: 100px; > > width: var(--length, auto); /* Now valid, width becomes '100px' */ > > } > > .bax { > > /* Also valid, regardless of --undefined's type. Width becomes 'auto'. > */ > > width: var(--undefined, auto); > > } > > > Specification > > > https://drafts.css-houdini.org/css-properties-values-api-1/#fallbacks-in-var-references > > (This is the section that should be removed.) > > Filed a PR for this, and pinged representatives from the other vendors: https://github.com/w3c/css-houdini-drafts/pull/1139 > > Summary > > The fallback part of a var() function does not validate against the type > of the custom property being referenced. > > Blink component > > Blink>CSS > <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3ECSS%22> > > Search tags > > custom properties > <https://chromestatus.com/features#tags:custom%20propeties>, @property > <https://chromestatus.com/features#tags:@property>, var() > <https://chromestatus.com/features#tags:var()>, fallback > <https://chromestatus.com/features#tags:fallback> > > TAG review > > None > > TAG review status > > Pending > > Risks > > Interoperability and Compatibility > > The use counter is at 0.000042%. > > https://chromestatus.com/metrics/feature/timeline/popularity/5231 > > There are only four sites listed above, and I had a look at how this > intent would impact those sites. As far as I can tell, they are either not > affected, or now begin doing what they were actually intended to do. > > https://athenabeachlagos.com/ > > @property --text-base { > > syntax: "<color>"; > > inherits: true; > > initial-value: #2A2A2A; > > } > > *, *:before, *:after { > > color: var(--text-base, inherit); > > } > > With this intent, var(--text-base, inherit) is now valid even though the > inherit keyword is not a <color>. This causes the text on the page to > generally change from rgb(0, 0, 0) to rgb(42, 42, 42), which is probably > what was intended here anyway. > > https://goodco.tv/ > > CSS.registerProperty: > > --controls-backdrop-color { > > inherits: true; > > syntax: "<color>"; > > initial-value: rgba(0, 0, 0, 0.6); > > } > > .hide-controls mux-player { > > --controls: none; > > } > > media-controller:is([media-paused], > :not([user-inactive]))::part(vertical-layer) { > > background-color: var(--controls-backdrop-color, var(--controls, rgba(0, > 0, 0, 0.6))); > > } > > The media-controller on this site seems to be hidden by default, with no > obvious way of enabling it. If I enable it with devtools, the controls > appear to have a fully transparent background. With this intent, it would > instead be the initial value rgba(0, 0, 0, 0.6), which seems harmless and > intended. > > https://kvashmusic.com/ > > @property --bgrotate { > > initial-value: 120deg; > > inherits: false; > > syntax: "<angle>"; > > } > > @property --bgrotate2 { > > initial-value: 255deg; > > inherits: false; > > syntax: "<angle>"; > > } > > @property --text { > > initial-value: 220deg; > > inherits: false; > > syntax: "<angle>"; /* <== Problem here */ > > } > > label[_ngcontent-ng-c1815873975] { > > background: var(--bg, white); > > color: var(--text, black); > > } > > They appear to have mis-registered --text as an <angle>, perhaps because > it started as a copy-paste from --bgrotate1/2. > > label[_ngcontent-ng-c1815873975] (despite being a <label>) is a theme > switcher widget, that by the looks of it will now get a computed color of > rgb(255, > 255, 255) rather than rgb(51, 51, 51). This seems to not matter, since > there's no actual text in the element, nor anything appearing to use > currentColor. (This intent has no effect here.) > > https://www.belabijuterias.com.br/ > > @property --rotate { > > syntax: "<angle>"; > > initial-value: 132deg; > > inherits: false; > > } > > .elementor-widget-text-path svg { > > transform: rotate(var(--rotate,0)) scaleX(var(--scale-x,1)) > scaleY(var(--scale-y,1)); > > } > > Zero is apparently not a valid <angle> (spec > <https://drafts.csswg.org/css-values-3/#angles:~:text=NOTE%3A-,For%20legacy%20reasons%2C,-some%20uses%20of>), > hence var(--rotate,0) would previously be invalid. > > This intent appears to have the effect of rotating a circular element on > the page, likely as originally intended. > > (End of detailed compat investigation.) > > Gecko: No signal > > WebKit: No signal > > Web developers: No signals > > Other signals: I have not requested official signals (that is a lot of > paperwork for a small detail), but it's clear that the WG considers the > original behavior a mistake, with support from both fantasai (Apple) and > Emilio (Mozilla) in the meeting notes. > https://github.com/w3c/csswg-drafts/issues/10455#issuecomment-2402837489 > > WebView application risks > > Does this intent deprecate or change behavior of existing APIs, such that > it has potentially high risk for Android WebView-based applications? > > None > > > Debuggability > > None > > > Will this feature be supported on all six Blink platforms (Windows, Mac, > Linux, ChromeOS, Android, and Android WebView)? > > Yes > > Is this feature fully tested by web-platform-tests > <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> > ? > > Yes > > > https://wpt.fyi/results/css/css-properties-values-api/var-reference-registered-properties.html?label=master&label=experimental&aligned&q=var-reference-registered-properties.html > > (The tests are currently testing the old behavior. They will be updated > when the main code change lands in Blink.) > > Flag name on about://flags > > None > > Finch feature name > > CSSTypeAgnosticVarFallback (not actually added yet) > > Requires code in //chrome? > > False > > Tracking bug > > https://issues.chromium.org/issues/372475301 > > Estimated milestones > > Shipping on desktop > > 136 > > Shipping on Android > > 136 > > Shipping on WebView > > 136 > > > Anticipated spec changes > > None > > Link to entry on the Chrome Platform Status > > https://chromestatus.com/feature/5128966769475584?gate=5169003917737984 > > This intent message was generated by Chrome Platform Status > <https://chromestatus.com/>. > > -- > You received this message because you are subscribed to the Google Groups > "blink-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to blink-dev+unsubscr...@chromium.org. > To view this discussion visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKFBnUpT2WdeByfYYaDG45Pq%2BWQMcK-NL81fQqscZwQrj%3DxeCQ%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKFBnUpT2WdeByfYYaDG45Pq%2BWQMcK-NL81fQqscZwQrj%3DxeCQ%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKFBnUqJcBGwVYnO6gxHhpczjQ_7%2BArx0AaFcZYYG6eoZ_gKpg%40mail.gmail.com.