This content originally appeared on Bram.us and was authored by Bramus!
The other day on Mastodon, Ryan wondered how hey can detect support for @starting-style
. While in theory you could use @supports at-rule()
for this, in practice you can’t because it has no browser support (😭).
Drawing inspiration from my previous post on how to detect support for @property
, I came up with a similar method to detect @starting-style
support
~
The Code
The code I landed on is this:
@property --supported {
syntax: "<number>";
initial-value: 0;
inherits: false;
}
:root {
transition: --supported 0s calc(infinity * 1s);
}
@starting-style {
:root {
--supported: 1;
}
}
In browsers with support for @starting-style
, the value of --supported
will be 1. In browsers without support the value is 0
. You can use that value with Style Queries, Space Toggles, etc.
~
How it works
The code works by registering a custom property with an initial-value
of 0
. The value of that property gets changes to 1
in @starting-style
.
To prevent the value from swapping back to 0
, it is given a transition delay that lasts for all eternity.
🌟 Shout-out to Schepp who mentioned this “long transition delay”-approach at CSS Day. The idea got stuck in my head and I’m happy I was able to use it shortly after discussing it.
~
Demos
Embedded below is a demo that uses this technique along with Style Queries, my preferred way of responding to custom property values.
See the Pen Detect @starting-style support by Bramus (@bramus) on CodePen.
In browsers with @starting-style
and Style Queries support, the body has a green background. In all others the background is red. Go take a peek at the previous post on @property
on how to adjust this to use a Space Toggle instead.
~
🔥 Like what you see? Want to stay in the loop? Here's how:
This content originally appeared on Bram.us and was authored by Bramus!
Bramus! | Sciencx (2024-07-11T21:40:10+00:00) Feature detect CSS @starting-style support. Retrieved from https://www.scien.cx/2024/07/11/feature-detect-css-starting-style-support/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.