页面背景
DESIGN TOKENS
组件不直接记颜色
不让 Card 自己记住“浅色背景是 #fff、深色背景是 #181818”,
而是统一引用 --surface、--text、--border 等语义变量。
--bg
--surface
Card / Panel 背景
--text
主要文字
--muted
次级文字
--border
边框与分隔线
--accent
按钮与强调色
THEME STRATEGY
系统主题 + 用户手动选择
默认情况下页面尊重系统的 prefers-color-scheme。
用户点击右上角按钮后,会生成明确的手动主题,并保存到本地。
首次访问
跟随系统 light / dark
用户手动切换
写入 data-theme
下次访问
读取 localStorage 恢复选择
CORE CSS
主题只改变量
:root {
--bg: #f7f7f4;
--surface: #ffffff;
--text: #171717;
}
[data-theme="dark"] {
--bg: #101112;
--surface: #181a1c;
--text: #f4f4f2;
}
.card {
background: var(--surface);
color: var(--text);
}
PRACTICAL RULES
Design Tokens 最值得建立的四层
Primitive
最基础的颜色、字号、尺寸原子值。
Semantic
bg、surface、text、muted、border 等用途变量。
Component
button-bg、card-radius 等局部组件 Token。
Theme
Light / Dark 只负责重定义语义 Token。