- From: Josh Tumath via GitHub <noreply@w3.org>
- Date: Fri, 29 Aug 2025 11:51:40 +0000
- To: public-css-archive@w3.org
JoshTumath has just created a new issue for https://github.com/w3c/csswg-drafts:
== [css-conditional][selectors] A way to set styles according to the used color scheme ==
## Problem
We can use `@media (prefers-color-scheme)` to set styles according to the user's preferred colour scheme. We can use the `light-dark()` colour function to set a colour value according to the [_used colour scheme_](https://drafts.csswg.org/css-color-adjust-1/#used-color-scheme). However, there is no way to set an entire rule of styles depending on the _used colour scheme_.
The author can use `<meta name="color-scheme">` and the `color-scheme` property to change the used colour scheme. As discussed in #10249, it is desirable for the author to be able to force the colour scheme to `only dark` or `only light` on certain pages of their website or certain portions of their page.
<details>
<summary>Examples of why an author would do that</summary>
* A page that play video content may use a dark colour scheme to make the video stand out better
* Pages for young children may use a light colour scheme, because user research shows young children have a worse experience on a dark colour scheme
* A portion of a page uses
* A WYSIWYG editor for content that appears in a dark colour scheme would need to present that content in the editor in a dark colour scheme as well
</details>
@tabatkins made the argument in #10249 that the fact that `@media (prefers-color-scheme)` doesn't use the _used colour scheme_ may be confusing to authors, or may even make the media query pointless for them.
So authors need a way to set styles for an element according to the _used colour scheme_.
## Possible solutions
In #10249, there were two ideas for how it could be done.
### 1. A new type of container query
Probably would be called `color-scheme()`.
```css
.header {
background-image: url("light-bg.avif");
@container color-scheme(dark) {
background-image: url("dark-bg.avif");
}
}
```
We could just use a style query for the `color-scheme` property, but that won't get the true _used colour scheme_ (i.e. it won't know if it has been set by `<meta name="color-scheme">`.)
### 2. A new pseudo-class
Probably would be called `:color-scheme()`.
```css
.header {
background-image: url("light-bg.avif");
&:color-scheme(dark) {
background-image: url("dark-bg.avif");
}
}
```
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/12681 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Friday, 29 August 2025 11:51:41 UTC