Kilian Valkhof recently needed to check if prefers-reduced-data
was supported by the browser or not
For this, I couldn’t use just
@media (prefers-reduced-data: no-preference)
because that would be false if either there was no support (since the browser wouldn’t understand the media query) or if it was supported but the user wanted to preserve data.What I needed was a test for the media feature regardless of its value. It turns out we can do that by using the or notation in media queries.
The result is a pretty mind-bending at-rule:
@media not all and (prefers-reduced-data), (prefers-reduced-data) {
…
}
I don’t fully grasp it but if Kilian says it works, I trust him on that.With a few extra pointers by Kilian on Twitter I get it now. Thankfully the JS version is a bit easier (and that one I do understand entirely).