主题界面的暗/光模式开关 prefers-color-scheme

一个暗/光模式开关prefers-color-scheme:

light
表示用户已告知系统他们选择使用浅色主题的界面。
dark
表示用户已告知系统他们选择使用暗色主题的界面。
译者注:“未得知”、“已告知”等用语,英文原文如此。
“未得知”可理解为:浏览器的宿主系统不支持设置主题色,或者支持主题色并默认为/被设为了未设置/无偏好。
“已告知”为:浏览器的宿主系统支持设置主题色,且被设置为了亮色或者暗色。

目前,若结果为 no-preference,无法通过此媒体特性获知宿主系统是否支持设置主题色,或者用户是否主动将其设置为无偏好。出于隐私保护等方面的考虑,用户或用户代理也可能在一些情况下在浏览器内部将其设置为 no-preference。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
样例
这个例子使用了一个有黑色背景和白色文字的元素,当用户使用浅色主题时,会翻转黑白颜色。


:root {
--foreground: #111;
--background: #f8f8f8;
}

@media (prefers-color-scheme: light) {
:root {
--foreground: #fff;
--background: blue;
}
}

@media (prefers-color-scheme: dark) {
:root {
--foreground: #f8f8f8;
--background: #111;
}
}


body {
font-family: helvetica, sans-serif;
color: var(--foreground);
background: var(--background);
}