← 返回首页
技术 2026年3月1日 · 1 分钟阅读 · 大可

暗色模式:自动 + 手动切换

基于 prefers-color-scheme 跟随系统,再用 CSS 变量与少量 JS 支持手动切换。


暗色模式不是简单反色,而是重新设计一套配色。核心思路是用 CSS 变量,再切换变量集。

跟随系统

:root { --bg: #fff; --text: #111; }
@media (prefers-color-scheme: dark) {
  :root { --bg: #0f172a; --text: #e2e8f0; }
}

不加任何 JS 就能跟随系统,但用户想手动切换时就不够了。

手动切换

<html> 上加 data-theme="dark" 类,用属性选择器覆盖变量:

html[data-theme="dark"] {
  --bg: #0f172a; --text: #e2e8f0;
}

JS 切换属性并写入 localStorage,刷新后读取恢复。为避免刷新闪白,要在 <head> 提前内联一段读存储的脚本(防闪烁)。

#CSS#暗色模式#主题