Prefers-Color-Scheme Media Query

With Safari Technology Preview 68, there is a new media query, prefers-color-scheme. I’ve used it on this site like the following:

@media (prefers-color-scheme: dark) {
    background-color: #000000;
}

Digging around in the WebKit release notes, it looks like it supports dark and light at the moment. I tested both, and the do appear to work.

Anyways, kind of cool! I’m sure my dark mode looks bad, so I’ll work on it. But I hope other browsers implement this media query soon as well.

Update 24 Jan 2019

Here is a Tailwind CSS plugin to add a dark and light variants. Just add this to the plugins array in your Tailwind config file.

// You need to make sure you have postcss imported in your config file:
// const postcss = require("postcss");

({ addVariant }) => {
    addVariant("dark", ({ container, separator }) => {
        const mediaRule = postcss.atRule({
            name: "media",
            params: "(prefers-color-scheme: dark)",
        });
        mediaRule.nodes = container.nodes;
        container.nodes = [mediaRule];
        mediaRule.walkRules((rule) => {
            rule.selector = `.dark${separator}${rule.selector.slice(1)}`;
        });
    });
    addVariant("light", ({ container, separator }) => {
        const mediaRule = postcss.atRule({
            name: "media",
            params: "(prefers-color-scheme: light)",
        });
        mediaRule.nodes = container.nodes;
        container.nodes = [mediaRule];
        mediaRule.walkRules((rule) => {
            rule.selector = `.light${separator}${rule.selector.slice(1)}`;
        });
    });
};

More information on adding Tailwind variants can be found here.


Date
October 25, 2018