css - 有没有办法检查用户的浏览器主题是什么颜色?

标签 css colors

我最近将我的 Mac 更新为 Mojave。在其中,计算机现在向浏览器发送有关暗模式是否打开的信息,以便在 CSS 中使用,就像本例中那样,这使得 <body> 中的文本变为蓝色。如果它是:

@media (prefers-color-scheme: dark) {
               body {
                   color: blue;
               }
            }

一些网站使用它来将他们的标签图标设置为白色或浅灰色(如果它处于打开状态)。例如:

The New York Times sets its tab icon to white if Dark Mode is on

但是,如果浏览器没有设置为深色主题,它看起来很糟糕,所以这不是检查内容应该是浅色还是深色的好方法:

The icon is barely visible

有没有什么方法可以在 CSS 或 JavaScript 中获取浏览器主题中选项卡的颜色,以便更好地实现此类功能?

最佳答案

与“宽度”和“高度”媒体查询一样,您可以根据“prefers-color-scheme”属性设置属性:

@media (prefers-color-scheme: dark) {
    color: white;
    background: black
}

请注意,您还可以通过这种方式设置变量和属性:

root: {
    --text-color: black;
    --back-color: white;
}
body {
    color: var(--text-color);
    background: var(--back-color)
}
@media (prefers-color-scheme: dark) {
    root: {
        --text-color: white;
        --back-color: black;
    }
}

这真的很酷。 :)

浏览器对此的支持非常新,并不是每个浏览器都支持(还),您将不得不选择是愿意稍等片刻还是不关心 :D https://caniuse.com/#search=prefers-color-scheme

You won't be able to get the exact color used by a user on his browser, simply because browsers are done differently and engines have to be a little standardized and can't implement some functionalities that will work only on their browser.

关于css - 有没有办法检查用户的浏览器主题是什么颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57781268/

相关文章:

html - Bootstrap - 面板组 - 不合理的间距

css - 调整窗口大小时如何将导航菜单恢复为无序 ListView ?

javascript - 在 CSS 形状内包装文本

c++ - 多色编辑字段 (Win32)

JQuery UI 工具栏按钮布局

css - 使用两个带有 * 的 css 属性选择器

java - Eclipse 上的 java 随机彩色打印

CSS 随机改变文本颜色

vba - 根据 Excel 单元格中的值设置 RGB 颜色

java - 在 Java 方法中更改我的背景