Prefers Color Scheme
Last updated
Was this helpful?
Last updated
Was this helpful?
lets you use light and dark color schemes in all browsers, following the specification.
From the command line, transform CSS files that use prefers-color-scheme
media queries:
Next, use that transformed CSS with this script:
Dependencies got you down? Don’t worry, this script is only 537 bytes.
First, transform prefers-color-scheme
queries using this .
Next, apply light and dark color schemes everywhere using this .
The frontend receives these color-index
queries, which are understood in all major browsers going back to Internet Explorer 9. However, since browsers only apply color-index
queries of 0
, our color scheme values are ignored.
Since these media queries are accessible to document.styleSheet
, no CSS parsing is required.
The value of 48
is chosen for dark mode because it is the keycode for 0
, the hexidecimal value of black. Likewise, 70
is chosen for light mode because it is the keycode for f
, the hexidecimal value of white.
uses a to transform prefers-color-scheme
queries into color-index
queries. This changes prefers-color-scheme: dark
into (color-index: 48)
, prefers-color-scheme: light
into (color-index: 70)
, and prefers-color-scheme: no-preference
into (color-index: 22)
.
uses a to change (color-index: 48)
queries into not all and (color-index: 48)
in order to activate “dark mode” specific CSS, and it changes (color-index: 70)
queries into not all and (color-index: 48)
to activate “light mode” specific CSS.