- From: Timo Tijhof via GitHub <sysbot+gh@w3.org>
- Date: Wed, 31 Jul 2024 15:11:09 +0000
- To: public-css-archive@w3.org
Krinkle has just created a new issue for https://github.com/w3c/csswg-drafts: == [css-conditional-4] Detecting "@starting-style" via @supports == https://drafts.csswg.org/css-conditional-4/ https://drafts.csswg.org/css-transitions-2/ ```css @supports not (@starting-style) { #qunit-banner { background: orange; } } @supports (@starting-style) { #qunit-banner { background: blue; } } ``` This renders orange in Firefox/Safari/Chrome despite the latter two supporting it. ### Use case I'm styling the [QUnit](https://qunitjs.com/) progress bar. ```css .qunit-banner { --qunit-progress: 20%; height: 5px; background-image: linear-gradient(#0769AD, #0769AD); background-repeat: no-repeat; background-size: var(--qunit-progress); transition: background-size 1000ms ease-out; @starting-style { --qunit-progress: 0%; } } ``` In JavaScript, each test does something like the folowing: ```js if (banner.style.setProperty) { var pc = Math.ceil((i / steps) * 100); banner.style.setProperty("--qunit-progress", Math.max(20, pc) + "%"); } ``` We smooth out the first 20% to account for application code and unit tests loading, as well as for the first whole second we run tests synchronously back-to-back for maximum throughput, which means the above style write doesn't (and shouldn't, this is a good thing!) get applied to rendering until we yield anyway. When running non-headless, we yield about once every whole second. The above works reasonably well when `@starting-style` is supported. However, when it isn't supported, it would start statically at 20% and sit still for a whole second. As a fallback I'd like to set the initial value to 0% when it isn't supported, and let the first test yield point set it to 20% which then utilizes the transition. Like so: ```css #qunit-banner:not([style]) { --qunit-progress: 0%; } ``` Unfortunately, this effectively cancels out `@starting-style` because it means it will "start" at 0% and goes to 0%, which is the same as only having the fallback, which means the first second no progress appears to happen until the first yield point. **Demo: <https://codepen.io/Krinkle/pen/JjQWdoe>** <img width="516" alt="Screenshot" src="https://github.com/user-attachments/assets/401052ab-97f7-479e-b243-39fbbbf2657b"> Might be related: * https://github.com/w3c/csswg-drafts/issues/2463 * https://github.com/w3c/csswg-drafts/issues/6611 * https://github.com/w3c/csswg-drafts/issues/9114 * https://github.com/w3c/csswg-drafts/issues/9175 Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/10648 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Wednesday, 31 July 2024 15:11:10 UTC