暗黑模式不是简单反色。它需要重新定义所有视觉层级,确保在深色背景上信息传达同样清晰有效。
设计原则
- 深色背景降低屏幕亮度,减少长时间使用的视觉疲劳
- 适合技术用户和开发者的工作环境
- 保持与浅色模式一致的信息层级和交互逻辑
- 不使用过亮的荧光色,避免在深色背景上刺眼
背景层级
深色模式的背景应形成清晰的深度层级:
Surface 900
页面底色
#0f172a
Surface 800
侧边栏、固定面板
#1e293b
Surface 700
卡片、模块容器
#334155
Surface 600
输入框、代码块
#475569
Surface 500
悬浮面板、下拉菜单
#64748b
层级之间通过明度差异区分,不依赖阴影。
文本层级
Primary
Primary Text
主标题、关键信息
#e5e7eb
Secondary
Secondary Text
正文、链接
#9ca3af
Tertiary
Tertiary Text
注释、辅助信息
#6b7280
Disabled
Disabled Text
不可用状态
#4b5563
关键规则:文本不使用纯白(#FFFFFF),纯白在深色背景上过于刺眼。
边框层级
Border Default
卡片边框
#334155
Border Elevated
分割线
#475569
Border Focus
聚焦边框(品牌色)
#5191fc
Border Subtle
低对比边框
#1e293b
边框使用与背景相近但更亮的颜色。
品牌色适配
品牌色在暗黑模式下需要适当调整:提高明度,降低饱和度。
浅色 vs 暗黑对比
浅色模式
Brand 500
#2d6ff2
Brand 600
#1a55db
Brand 50
#f0f5ff
暗黑模式
Brand 400
提高明度
#5191fc
Brand 300
链接、次级品牌色
#85b4fd
Brand 900
淡底替代色
#153170
品牌色按钮背景可使用原色,但文字需确保对比度足够。
代码块
- 背景色使用 Surface 800 或更深
- 语法高亮颜色需重新适配深色主题
- 行号和注释使用低亮度灰色
表格
- 表头背景使用 Surface 800
- 偶数行使用 Surface 850 做斑马纹
- 边框使用 Surface 600
图表
- 图表背景透明或使用 Surface 900
- 数据线条和填充使用亮色
- 网格线使用 Surface 700
- 标签使用 Secondary Text 颜色
Tailwind CSS 映射
以下是组件开发中常用的浅色/暗黑模式颜色映射:
| 浅色模式 | 暗黑模式 | 用途 |
|---|---|---|
bg-surface-50 | dark:bg-surface-900 | 页面背景 |
bg-surface-100 | dark:bg-surface-800 | 卡片、侧边栏 |
bg-white | dark:bg-surface-800 | 容器、面板 |
bg-brand-50 | dark:bg-brand-900/30 | 品牌色淡底 |
text-surface-900 | dark:text-surface-100 | 主标题 |
text-surface-700 | dark:text-surface-200 | 链接、次标题 |
text-surface-600 | dark:text-surface-300 | 正文 |
text-brand-600 | dark:text-brand-400 | 品牌色文字 |
border-surface-200 | dark:border-surface-700 | 边框 |