要实现暗色模式切换,可以使用 CSS 的变量和媒体查询。
首先,定义一个 CSS 变量来存储暗色模式和亮色模式下的颜色值。可以使用 -- 前缀来定义变量,如:--bg-color: #ffffff;。
然后,在 HTML 的根元素上设置 data-theme 属性,用来切换暗色模式和亮色模式。如:<html data-theme="light">。
接下来,使用媒体查询来检测当前的主题模式,并根据其设置相关的样式。如:@media (prefers-color-scheme: dark),该媒体查询可以检测用户设备的暗色模式偏好设置。
最后,在 CSS 中使用 var() 函数来使用定义好的变量。如:background-color: var(--bg-color);。
以下是一个简单的示例代码:
:root {
--bg-color: #ffffff;
--text-color: #000000;
}
[data-theme="dark"] {
--bg-color: #000000;
--text-color: #ffffff;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
}
@media (prefers-color-scheme: dark) {
[data-theme="light"] {
--bg-color: #000000;
--text-color: #ffffff;
}
}
在上面的示例中,我们首先定义了两个 CSS 变量:--bg-color 和 --text-color。接着,我们在 HTML 的根元素上设置了 data-theme 属性,并将其初始值设为 light。
然后,我们使用媒体查询来检测用户设备的暗色模式偏好设置,并在查询中设置了相应的样式。最后,在 CSS 中使用 var() 函数来使用定义好的变量,从而实现了暗色模式切换。