深色模式不是简单地把背景变黑,而是一整套色彩语义的重构。
三层变量结构
核心思路
所有组件只消费语义变量,不直接写死颜色。
1 | :root { |
避免闪烁
在 <head> 内联一段同步脚本,先于 CSS 落地 data-scheme:
1 | <script> |
| 方案 | 优点 | 缺点 |
|---|---|---|
| localStorage | 尊重用户选择 | 首屏需防闪烁脚本 |
| 跟随系统 | 零配置 | 无法手动覆盖 |
| 双优 | 三态切换 | 实现稍复杂 |
深色模式不是简单地把背景变黑,而是一整套色彩语义的重构。
所有组件只消费语义变量,不直接写死颜色。
1 | :root { |
在 <head> 内联一段同步脚本,先于 CSS 落地 data-scheme:
1 | <script> |
| 方案 | 优点 | 缺点 |
|---|---|---|
| localStorage | 尊重用户选择 | 首屏需防闪烁脚本 |
| 跟随系统 | 零配置 | 无法手动覆盖 |
| 双优 | 三态切换 | 实现稍复杂 |
本文为原创内容,转载请注明出处:<a href="https://xfm0797.github.io/xfm-docs/2026/09/20/dark-mode/">深色模式的实现要点</a>
评论