- From: Guillaume via GitHub <sysbot+gh@w3.org>
- Date: Wed, 19 Mar 2025 14:32:57 +0000
- To: public-css-archive@w3.org
The example in my initial comment is not good because if substitution takes place at the level of CSS tokens, there is just an unclosed `calc(` at substitution time.
This one is better and demonstrates a difference between Chrome and Firefox:
> ```html
> <style>
> #element {
> margin: calc(1px / var(--custom)) 1px;
> --custom: ( 2;
> }
> </style>
> <div id="element"></div>
> <script>
> getComputedStyle(element).margin // 0px in Chrome, 0.5px 1px in Firefox
> </script>
> ```
Chrome operates substitution on a list of tokens and sees `calc(1px / (2) 1px`, which is invalid, whereas Firefox operates it on a list of component values and sees `calc(1px / (2)) 1px`, which resolves to `0.5px 1px`.
CSS Syntax requires consuming a declaration value as a list of component values but it could be "flattened" back to a list of tokens before applying substitutions.
Did I understand correctly? Can I close this issue and assume this is an issue in Firefox?
--
GitHub Notification of comment by cdoublev
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/11316#issuecomment-2736867072 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Wednesday, 19 March 2025 14:32:58 UTC