Websites can automatically switch to dark mode if you're using it, assuming the site supports this. But most websites don't have automatic dark mode—or any dark mode.
The new standard is registered on W3C in Media Queries Level 5.
NOTE: currently only available in Safari Technology Preview Release 68
In case user preference is light
:
/* Light mode */
@media (prefers-color-scheme: light) {
body {
background-color: white;
color: black;
}
}
In case user preference is dark
:
/* Dark mode */
@media (prefers-color-scheme: dark) {
body {
background-color: black;
color: white;
}
}
There is also the option no-preference
in case a user has no preference. But I recommend you just to use normal CSS in that case and cascade your CSS correctly.
EDIT (7 dec 2018):
In Safari Technology Preview Release 71 they announced a toggle switch in Safari to make testing easier. I also made a test page to see the browser behaviour.
If you have Safari Technology Preview Release 71 installed you can activate through:
Develop > Experimental Features > Dark Mode CSS Support
Then if you open the test page and open the element inspector you have a new icon to toggle Dark/Light mode.
EDIT (11 feb 2019): Apple ships in the new Safari 12.1 dark mode
EDIT (5 sep 2019): Currently 25% of the world can use dark mode CSS. Source: caniuse.com
Upcoming browsers:
- iOS 13 ( I guess it will be shipped next week after Apple's Keynote)
- EdgeHTML 76 (not sure when that will be shipped)
EDIT (5 nov 2019): Currently 74% of the world can use dark mode CSS. Source: caniuse.com
EDIT (3 Feb 2020): Microsoft Edge 79 supports dark mode. (released on 15 Jan 2020)
My suggestion would be: that you should consider implementing dark mode because most of the users can use it now (for night-time users of your site).
Note: All major browsers are supporting dark mode now, except: IE,
Edge
EDIT (19 Nov 2020): Currently 88% of the world can use dark mode CSS. Source: caniuse.com
CSS-framework Tailwind CSS v2.0 supports dark-mode. (released on 18 Nov 2020)
EDIT (2 Dec 2020):
Google Chrome adds Dark Theme emulation to Dev Tools. Source: developer.chrome.com
If you want to detect it from JS, you can use this code:
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
// dark mode
}
To watch for changes:
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', e => {
const newColorScheme = e.matches ? "dark" : "light";
});
This is currently (September 2018) being discussed in "CSS Working Group Editor Drafts". Spec has launched (see above), available as a media query. Something has already landed in Safari, see also here. So in theory you can do this in Safari/Webkit:
@media (prefers-dark-interface) { color: white; background: black }
But it seems that this is private. On MDN a CSS media feature inverted-colors
is mentioned. Plug: I blogged about dark mode here.
According to Mozilla, here is the preferred method as of 2020
@media (prefers-color-scheme: dark) {
body {
background: #000;
}
}
@media (prefers-color-scheme: light) {
body {
background: #fff;
}
}
For Safari/Webkit you can use
@media (prefers-dark-interface) { background: #000; }
I searched though Mozilla API, they don't seem to have any variables corresponding to the browser-windows color. Though i found a page that might help you: How to Use Operating System Styles in CSS. Despite the article-header the colors are different for Chrome and Firefox.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With