> 色彩规范不是好看的色卡,是整个设计系统的"视觉语法"。
> 好的色彩规范 = 结构纪律 + 语义清晰 + 零装饰冗余。
> 好的色彩规范是"半成品"——设计用它搭建界面,开发用它写CSS,两者说的是同一种颜色语言。
>
> 更进一步的铁律:色彩规范必须同时满足"视觉纪律"与"语义可维护性"。
色彩规范文档不是设计师的自嗨笔记。它必须同时满足三个角色的需求:
检验标准:给一个不懂配色的人看这份规范,他能否拼出一致的页面。
| 认知 | 说明 |
|---|---|
| ------ | ------ |
| 颜色不等于语义 | #002B5C 只是一个色值,--navy 也只是个标签,--color-primary 才是语义。规范的真正价值在于从"好看的颜色"到"有含义的颜色"的映射。 |
| 三层法则不可少 | 基础色板(Primitive)→ 语义Token(Semantic)→ 组件映射(Component)。跳过任何一层都会导致后续改版困难。 |
| 容器与内容是两套逻辑 | 背景色是"容器",文字色是"内容",操作色是"交互"。三者必须独立定义,不可耦合。 |
| 视觉纪律即专业 | 零圆角、实色阴影、裁决式字距——这些不是风格偏好,是"信息靠结构对齐,不靠装饰"的结构化表达纪律。 |
品牌色锚定义 ──→ 色板梯度扩展 ──→ 语义Token设计 ──→ 应用规则定义
↓ ↓
字体配套规范 ←────────────────────────── 暗色/多主题适配 ←── 组件色彩映射
↓
规范文档化交付
本技能采用 铁幕·Iron 三层配色递进,根据内容复杂度选择层级:
| 层级 | 触发条件 | 色板 |
|---|---|---|
| ------ | --------- | ------ |
| 基础色 | 默认 / 简单内容 | 黑白灰三层 |
| 主题色 | 内容复杂 / 公司有品牌色要求 | 基础色 + 主题色(如海军蓝 #002B5C) |
| 强调色 | 基础和主题色无法覆盖 | 基础色 + 主题色 + 辅助/对比色(如深红 #C8102E) |
核心原则:
| 规范项 | 规则 | 说明 |
|---|---|---|
| -------- | ------ | ------ |
| 零圆角 | 所有 border-radius: 0 | 采用直线设计,呈现干练商务感。仅在极小标签上允许 2px 圆角 |
| 实色阴影 | box-shadow: 2px 2px 0px #b8b0a4 | 采用偏移实色块阴影,不用模糊阴影 |
| 裁决式宽字距 | 标题 0.08-0.12em,正文 0.04em,等宽 0.06em | 信息靠字号 + 字体对比 + 字距对齐 |
| 蓝色主权 | 主题色 #1e3a5f(或品牌主色)为结构色 | 仅在标注重点时使用,不滥用 |
| 衬线数字 | 数值使用衬线体(Noto Serif SC / Playfair Display) | 增强正式感与数据权威感 |
| 最少元素最大化表达 | 每个元素都有存在理由 | 删掉不影响理解就该删 |
当思考用什么颜色时,必须依次回答:
从品牌 Logo、VI 手册或业务定位中提取 1-3 个核心色值。
操作指令:
输出示例:
主色:海军蓝 #002B5C(品牌信任感)
强调色:深红 #C8102E(关键操作、预警)
功能色:绿色 #1B7340(正向、成功)
检验标准:核心色不超过 3 个,超出说明品牌定位不够聚焦。
对每个核心色,明确:
模板:
- name: 海军蓝(主色)
hex: "#002B5C"
rgb: (0, 43, 92)
hsb: (212°, 100%, 36%)
usage: 主色调、导航栏背景、统计栏、重要按钮
检验标准:每个核心色都有明确的 "usage" 字段,不允许 "用于强调" 这种模糊描述。
每个核心色扩展为 3-6 阶梯度(明度变化),通常结构为:
深色(Dark) → 用于标题、重要文字
主色(Base) → 品牌主色调
浅色(Light) → 背景、悬停态、次要元素
极浅色(Pale) → 极浅背景、分割线
实战公式:
| 梯度层级 | HEX 调整策略 | 典型用途 |
|---|---|---|
| ---------- | ------------- | ---------- |
| Dark(深) | 原色明度 -30%~-40% | 标题文字、深色模式 |
| Base(基准) | 品牌核心值 | 主色调用色 |
| Light(浅) | 原色明度 +30% | 交互元素、次要按钮 |
| Pale(极浅) | 原色明度 +60%~+70% + 加白 | 浅色背景、hover态 |
输出示例(基于海军蓝):
--navy-dark: #001B3A; /* -40% 明度:标题、重要文字 */
--navy: #002B5C; /* 基准值:主色调、按钮、背景 */
--navy-light: #003D7A; /* +30% 明度:链接、交互元素 */
检验标准:每个核心色至少扩展 3 阶,且有明确的用途说明。
中性色(灰、灰蓝、银灰)是使用频率最高的色系,需要建立 5-8 阶梯度:
| 层级 | 明度区间 | 用途 |
|---|---|---|
| ------ | --------- | ------ |
| Text Primary(主文字) | #1Axxxx ~ #2Axxxx | 正文、标题 |
| Text Secondary(次要文字) | #4Axxxx ~ #5Axxxx | 辅助说明 |
| Tertiary(辅助) | #7Axxxx ~ #8Axxxx | 标签、提示文字 |
| Disabled(禁用) | #C8xxxx ~ #D8xxxx | 禁用态、空状态 |
| Background(浅背景) | #E8xxxx ~ #F8xxxx | 背景、卡片、表格悬停 |
命名规范(铁幕·Iron 风格——用材质/自然意象命名):
--slate: #3D4F5F; /* 板岩-次要元素 */
--steel: #5A6F7F; /* 钢色-辅助文字 */
--silver: #8A9BAE; /* 银灰-标签/提示 */
--ice: #C8D3DE; /* 冰色-禁用态 */
--mist: #E8EDF2; /* 薄雾-浅色背景 */
--snow: #F4F6F8; /* 雪色-表格悬停/卡片 */
检验标准:中性色覆盖从主文字(最深)到纯白背景(最浅)的完整梯度,且每个层级都有指定用途。
Token 必须分三层,这是决定规范可维护性的关键。
| Token层级 | 命名规则 | 示例 | 说明 |
|---|---|---|---|
| ----------- | --------- | ------ | ------ |
| Primitive(原始层) | --{color-name} | --navy, --silver, --accent | 直接对应 HEX 色值,无业务含义 |
| Semantic(语义层) | --color-{role} | --color-primary, --color-success | 按用途命名,引用 Primitive |
| Component(组件层) | --{component}-{property} | --button-bg, --card-border | 绑定到具体 UI 元素 |
核心原则:
按以下四类语义定义 Token:
A. 品牌色语义
--color-brand: var(--navy); /* 品牌主色 */
--color-brand-hover: var(--navy-light); /* 品牌悬停 */
--color-brand-soft: var(--mist); /* 品牌浅色背景 */
B. 文字色语义
--color-text-primary: #1A2332; /* 主文字 */
--color-text-secondary: #4A5568; /* 次要文字 */
--color-text-tertiary: #7A8694; /* 辅助文字 */
--color-text-on-brand: #FFFFFF; /* 品牌色背景上的文字 */
C. 功能色语义
--color-success: #1B7340; /* 成功/正向 */
--color-success-bg: #EDF7F0; /* 成功背景 */
--color-error: #C8102E; /* 错误/负向 */
--color-error-bg: #FDF0F0; /* 错误背景 */
--color-warning: #B8860B; /* 警告 */
--color-warning-bg: #FDF6E3; /* 警告背景 */
--color-disabled: #8A9BAE; /* 禁用 */
--color-disabled-bg: #F4F6F8; /* 禁用背景 */
D. 结构层语义
--color-surface: #FFFFFF; /* 主背景(表面) */
--color-surface-secondary: #F7F8FA; /* 次要背景 */
--color-border: #D6DCE4; /* 主边框 */
--color-border-light: #E8ECF0; /* 浅边框 */
检验标准:每个 Token 的命名能让人一眼看出它的用途("这是什么颜色" → "这个颜色做什么用")。
列出所有背景色层级,明确嵌套规则:
/* 层级0:最外层 */
--bg-primary: #FFFFFF; /* 页面主背景 */
--bg-secondary: #F7F8FA; /* 中性背景-内容区域 */
--bg-tertiary: #F4F6F8; /* 雪色-卡片/表格悬停 */
--bg-subtle: #E8EDF2; /* 薄雾-分割区域 */
/* 层级1:品牌背景 */
--bg-brand: var(--navy); /* 统计栏、导航等品牌背景 */
--bg-brand-light: var(--mist); /* 品牌浅背景 */
/* 层级2:状态背景(功能色) */
--bg-success: #EDF7F0; /* 成功态背景 */
--bg-warning: #FDF6E3; /* 警告态背景 */
--bg-error: #FDF0F0; /* 错误态背景 */
嵌套规则:同一页面内背景色层级相差不超过 2 级(如白背景上不能直接放薄雾,中间需要中性背景过渡)。
为每个背景色定义其上文字的颜色:
| 背景色 | 主文字 | 次要文字 | 辅助文字 |
|---|---|---|---|
| -------- | -------- | --------- | --------- |
--bg-primary(白) | --text-primary #1A2332 | --text-secondary #4A5568 | --text-tertiary #7A8694 |
--bg-brand(海军蓝) | #FFFFFF | #C8D3DE | #8A9BAE |
--bg-success(绿色背景) | #1B7340 | #3D8F5A | #6AAD80 |
秘笈:对比度检查
| 用途 | 色值 | 使用场景 |
|---|---|---|
| ------ | ------ | --------- |
| 主边框 | #D6DCE4 | 卡片边框、表格边框 |
| 浅边框 | #E8ECF0 | 分割线、列表间隔 |
| 强调边框 | var(--navy) | 选中态、卡片左侧强调条 |
特殊规则:强调边框(如卡片左侧 3px border)触发 hover 时变为 var(--accent)。
将所有 UI 组件逐一映射到语义 Token:
| 组件 | 背景色 | 文字色 | 边框色 | 特殊规则 |
|---|---|---|---|---|
| ------ | -------- | -------- | -------- | --------- |
| 导航栏 | --bg-brand | --color-text-on-brand | 无 | Logo 用白 |
| 统计栏 | --navy | #FFFFFF | 无 | 数值衬线字体 |
| 表格 | 默认白,悬停 --snow | --text-primary | --border | 行高40px |
| 卡片 | #FFFFFF | --text-primary | --border | 左强调线 --navy, hover --accent |
| 标签(Tag) | --navy | #FFFFFF | 无 | 圆角 2px |
| 按钮-主要 | --navy | #FFFFFF | 无 | hover 加深 |
| 按钮-次要 | transparent | --navy | --navy | hover 填充 |
| 输入框 | #FFFFFF | --text-primary | --border | focus --navy |
检验标准:每个组件都明确写出 背景、文字、边框(或标注"无")、以及交互态(hover/focus/active)。
| 状态 | 容器色 | 文字色 | 示例组件 |
|---|---|---|---|
| ------ | -------- | -------- | --------- |
| 运营中 | 无标签(默认) | 默认 | 状态标签 |
| 停更/暂停 | --amber-bg | --amber | 状态标签 |
| 已注销 | --snow | --silver | 状态标签 |
| KPI 正向 | 无 | --green | 数据指标 |
| KPI 负向 | 无 | --accent | 数据指标 |
| KPI 持平 | 无 | --silver | 数据指标 |
/* 裁决式字体栈 */
font-family-display: 'Playfair Display', 'Noto Serif SC', serif; /* 英文标题/大标题 */
font-family-serif: 'Noto Serif SC', serif; /* 中文标题/数值强调 */
font-family-sans: 'Noto Sans SC', -apple-system, BlinkMacSystemFont, sans-serif; /* 正文/通用 */
font-family-mono: 'JetBrains Mono', 'Fira Code', monospace; /* 代码/数据/元数据 */
铁幕·Iron 字体使用规则:
Playfair Display(衬线体,增强权威感)Noto Serif SC(衬线体,数据正式感)Noto Sans SC(无衬线体,阅读舒适)JetBrains Mono(等宽体,技术精确感)| 用途 | 大小 | 字重 | 行高 | 字距 | 色彩 |
|---|---|---|---|---|---|
| ------ | ------ | ------ | ------ | ------ | ------ |
| 页面标题 | 22px | 700 | 1.4 | 0.10em | --text-primary |
| 区块标题 | 18px | 700 | 1.4 | 0.08em | --text-primary |
| 卡片标题 | 13.5px | 600 | 1.5 | 0.06em | --text-primary |
| 正文 | 12-12.5px | 400-500 | 1.6 | 0.04em | --text-primary |
| 辅助说明 | 11px | 400 | 1.5 | 0.04em | --text-secondary |
| 标签/徽章 | 10-11px | 500-600 | 1.3 | 0.06em | --text-tertiary |
| 数值强调 | 24-30px | 700(衬线体) | 1.2 | 0.08em | 按语义 |
暗色主题不是"反色",而是重新映射语义:
/* 暗色主题:只改 Semantic 层,不改 Primitive 层 */
[data-theme="dark"] {
--color-surface: #1A2332; /* 主背景变深 */
--color-surface-secondary: #2A3440; /* 次要背景 */
--color-text-primary: #E8EDF2; /* 文字变浅 */
--color-text-secondary: #8A9BAE;
--color-border: #3D4F5F;
--color-border-light: #2A3440;
/* 品牌色在暗色背景下可能需要调整亮度和饱和度 */
--color-brand-hover: #1E5A8F; /* 悬停更亮 */
}
核心原则:
--navy, --silver 等 Primitive 值规范文档必须包含以下章节,按顺序排列:
1. 设计哲学与视觉纪律(铁幕·Iron 核心原则)
2. 基础色板(CSS Variables 完整列表)
3. 核心色系(每个色系的梯度表 + 用途说明)
4. 语义Token映射(Primitive → Semantic 映射表)
5. 文字色规范(各层级 + 背景色对比度规则)
6. 背景色体系(层级 + 嵌套规则)
7. 边框色规范
8. 强调与状态色(功能色完整表)
9. 字体规范(字体栈、字号字重映射、字距规则)
10. 组件色彩映射(组件 → Token 映射表)
11. 暗色/多主题适配(如适用)
12. 设计特点总结(3-7条关键原则)
| 格式 | 用途 | 包含内容 |
|---|---|---|
| ------ | ------ | --------- |
| Markdown(.md) | 设计侧参考文档 | 完整的色彩规范文字说明 |
| CSS Variables(.css) | 开发侧引入文件 | 直接可用的 :root 变量声明 |
| JSON Token(.json) | 跨平台设计Token | 结构化的 Primitive/Semantic/Component |
| Figma Variables(.json) | 设计工具同步 | 可导入 Figma 的色彩变量文件 |
完成规范后逐项检查:
| 陷阱 | 表现 | 后果 | 解决方案 |
|---|---|---|---|
| ------ | ------ | ------ | --------- |
| 只给色卡不给语义 | 文档只有色值没有用途说明 | 设计师和开发各说各话 | 必须建立 --color-{role} 语义层 |
| 跳过中性色阶 | 只有品牌色,没有完整灰度体系 | 界面缺乏层次感 | 建立 5-8 阶中性色梯度 |
| 语义重叠 | --color-primary 和 --color-brand 混用 | 改版时混乱 | 统一语义定义,禁止同义不同名 |
| 忽略深色模式 | 暗色主题下品牌色不可读 | 功能失效 | 至少提前定义暗色 Token 覆盖规则 |
| 组件映射不完整 | 新组件出现时无色彩规则 | 设计走查返工 | 建立组件映射表并持续维护 |
| 不检查对比度 | 美观但不可用 | 视障用户无法使用 | 每次配色后检查 WCAG 对比度 |
| 命名不统一 | 混用中英文、拼音、缩写 | 团队协作困难 | 统一使用英文语义命名,建立命名词典 |
| 滥用圆角和阴影 | 卡片圆角 8px + 模糊阴影 | 破坏铁幕·Iron 视觉纪律 | 零圆角 + 实色偏移阴影 |
| 字距不统一 | 标题和正文混用字距 | 信息层级混乱 | 严格按层级定义字距 |
| 场景 | 重点 Phase | 简化建议 |
|---|---|---|
| ------ | ----------- | --------- |
| 创业项目快速出稿 | Phase 1 → Phase 3 → Phase 8 | 跳过 4/5/7,先在 Phase 1 完成品牌色后直接到语义 Token + 文档 |
| 成熟产品系统重构 | Phase 2 → Phase 3 → Phase 5 → Phase 7 | 重点在中性色阶、组件映射和暗色主题 |
| 企业级 B 端系统 | 全部 8 个 Phase | 不跳过任何环节,尤其是 Phase 7 暗色适配 |
| 设计系统从零搭建 | Phase 1 → Phase 2 → Phase 3 → Phase 6 → Phase 8 | 先完成核心色彩 + 字体后即可交付最小可用规范 |
| 移动端 App | Phase 3 → Phase 4 → Phase 5 | 简化色阶,重点在语义 Token 和组件映射 |
| 响应式 Web | Phase 2 → Phase 3 → Phase 4 → Phase 7 | 中性色阶要丰富,暗色主题必做 |
| 商业咨询 PPT 配套 | Phase 1 → Phase 2 → Phase 3 → Phase 6 | 重点在三层配色递进 + 裁决式字体 + 零圆角纪律 |
共 1 个版本