颜色命名一旦失控,后续组件、主题文件和设计稿就很难长期保持一致。
命名规则
颜色 Token 命名生成器在线工具
把品牌色、中性色和状态色整理成统一的 Token 命名包,同时输出 CSS 变量、Design Token JSON 和 JS 常量示例,适合设计系统、前端主题和组件库协作。这个页面首屏优先完成命名规则收口。
实时命名
它解决的不是颜色本身,而是“这组颜色应该怎么叫”,避免项目里同时出现 `brandBlue`、`primaryColor`、`blueMain` 这类混乱写法。
命名生成器更关注“怎么统一叫法”,适合把颜色规则沉淀进设计 token、CSS 变量和前端常量里。
品牌色
颜色家族已经整理成统一的 Token 命名包
从原始 `50-900` 色阶到语义别名、JSON Token 和 JS 常量命名都已经补齐,适合直接沉淀到设计系统。
- 家族名
- brand
- Token 类型
- 品牌色
- 色板模式
- 平衡型
- 推荐主别名
- --brand-primary
- 推荐软底别名
- --brand-active
- 推荐正文别名
- --brand-strong
:root {
--brand-primary: var(--brand-500);
--brand-hover: var(--brand-600);
--brand-active: var(--brand-700);
--brand-surface: var(--brand-50);
--brand-border: var(--brand-200);
--brand-strong: var(--brand-800);
}{
"color": {
"brand": {
"50": { "value": "#F3F6FC" },
"100": { "value": "#E6ECF9" },
"200": { "value": "#CBD9F6" },
"300": { "value": "#A1BBF2" },
"400": { "value": "#6B95EF" },
"500": { "value": "#2563EB" },
"600": { "value": "#1254E2" },
"700": { "value": "#0D49C9" },
"800": { "value": "#0838A0" },
"900": { "value": "#062A7A" },
"primary": { "value": "{color.brand.500}" },
"hover": { "value": "{color.brand.600}" },
"active": { "value": "{color.brand.700}" },
"surface": { "value": "{color.brand.50}" },
"border": { "value": "{color.brand.200}" },
"strong": { "value": "{color.brand.800}" }
}
}
}export const brandTokens = {
brand: {
50: "#F3F6FC",
100: "#E6ECF9",
200: "#CBD9F6",
300: "#A1BBF2",
400: "#6B95EF",
500: "#2563EB",
600: "#1254E2",
700: "#0D49C9",
800: "#0838A0",
900: "#062A7A",
primary: "var(--brand-500)",
hover: "var(--brand-600)",
active: "var(--brand-700)",
surface: "var(--brand-50)",
border: "var(--brand-200)",
strong: "var(--brand-800)",
}
} as const;.badge-soft {
background: var(--brand-active);
color: var(--brand-strong);
}
.button-main {
background: var(--brand-primary);
color: #fff;
}
.button-main:hover {
background: var(--brand-hover);
}适合已经开始收口变量、准备接入 design token 或组件库颜色规范的阶段。
先确定色阶,再统一命名,最后再映射到页面角色,这条顺序会更稳。
为什么颜色命名会失控
多数项目的问题不是没有变量,而是变量名没有统一规则,导致同一种颜色在不同文件里叫法完全不同。
- 当品牌色、中性色和状态色混在同一套命名里时,组件层和页面层会越来越难维护。
- 如果只有 `blue-500` 这类原始命名,没有 `primary / surface / border` 这类语义别名,组件仍然难以复用。
- 前端、设计稿和 token JSON 如果各自一套命名,后续每次协作都会重复解释颜色角色。
这个工具适合在什么时候使用
它更适合“准备沉淀规范”而不是“只想临时取一个颜色”的阶段。
- 组件库和站点主题开始正式整理颜色变量时。
- 设计系统要同时维护 CSS、Design Token JSON 和前端常量时。
- 项目准备从松散的颜色写法过渡到统一 Token 管理时。
常见命名类型参考
不同颜色家族适合的语义别名不同,下面这组静态参考更适合用来判断命名方向。
使用建议
如果你要把这套命名正式接进项目,建议按下面这条顺序收口。
- 先用品牌色板或批量颜色转换器把色值统一,再进命名生成器收口变量名。
- 命名确定后,再用主题映射器把它们映射成 `accent / surface / text / border` 这类页面角色。
- 如果团队已经在用 Design Token JSON,最好同时保留 CSS 和 JSON 两套输出,避免后续再手抄变量名。
实际演示
示例输入输出
示例重点展示品牌色和状态色在 CSS、JSON Token 和变量命名上的统一方式。
品牌蓝 Token 命名
适合产品站或组件库把主色统一成可复用的品牌命名体系。
#2563EB
brand
品牌色
--brand-primary: var(--brand-500) --brand-hover: var(--brand-600) --brand-active: var(--brand-700) --brand-surface: var(--brand-50) --brand-border: var(--brand-200) --brand-strong: var(--brand-800)
{
"color": {
"brand": {
"50": { "value": "#F3F6FC" },
"100": { "value": "#E6ECF9" },
"200": { "value": "#CBD9F6" },
"300": { "value": "#A1BBF2" },
"400": { "value": "#6B95EF" },
"500": { "value": "#2563EB" },
"600": { "value": "#1254E2" },
"700": { "value": "#0D49C9" },
"800": { "value": "#0838A0" },成功绿 Token 命名
适合把反馈色整理成状态别名、Design Token JSON 和前端常量。
#16A34A
success
成功色
--success-main: var(--success-500) --success-hover: var(--success-600) --success-soft: var(--success-50) --success-border: var(--success-200) --success-strong: var(--success-700) --success-text: var(--success-800)
{
"color": {
"success": {
"50": { "value": "#EFFAF3" },
"100": { "value": "#DFF6E7" },
"200": { "value": "#B8EFCC" },
"300": { "value": "#86EAAA" },
"400": { "value": "#40E27C" },
"500": { "value": "#16A34A" },
"600": { "value": "#139643" },
"700": { "value": "#0E8138" },
"800": { "value": "#0B6B2E" },规则说明
颜色 Token 命名生成器会同时保留原始 `50-900` 色阶和语义别名,核心目标是把颜色值和角色命名统一下来。
- 原始色阶更适合做颜色仓库,语义别名更适合给按钮、背景、边框和状态提示直接使用。
- 家族名会被统一整理成 kebab-case,方便同时服务 CSS、JSON 和前端常量命名。
- 品牌色、中性色和状态色的别名结构不应该完全一样,这也是工具区分命名类型的原因。
常见误区
很多命名混乱问题不是颜色太多,而是原始色阶和语义角色没有分层。
- 只有 `blue-500` 这类原始名,没有 `primary`、`surface`、`border` 这类角色名,组件层仍然会反复找色。
- 如果同一种颜色在 CSS、JSON 和前端常量里叫三套名字,后续维护成本会越来越高。
- 命名生成器不是替你决定颜色审美,它只是先把规则统一好,便于后续团队协作。
结果解释
结果区会同时给出 CSS 变量、语义别名、Design Token JSON、JS 常量和使用示例,适合一次性把命名规则落到多个消费层。
- CSS 变量适合页面样式和主题文件。
- Design Token JSON 更适合设计 token 平台或多端同步。
- JS 常量和使用示例更适合前端主题配置、组件库和文档代码片段。
推荐处理链路
命名收口之后,下一步更适合把这些变量继续映射成页面角色或组件规范。
- 如果原始颜色来源还很散,先回到批量颜色转换器统一格式。
- 如果命名已经稳定,下一步就该继续做主题映射和组件可读性校验。
常见问题
常见问题
颜色 Token 命名生成器 FAQ 主要补充原始色阶、语义别名和多端输出的关系。
原始色阶和语义别名为什么要同时保留?
原始色阶更适合做基础颜色仓库,语义别名更适合给组件直接使用。两者配合起来,既能保留扩展性,也能避免页面里到处手挑颜色。
家族名一定要用 `brand`、`success` 这类固定词吗?
不一定。你可以自定义家族名,但最好保证它和团队现有的设计规范、组件命名和主题文件保持一致,这样后续协作成本更低。
为什么要同时输出 CSS、Design Token JSON 和 JS 常量?
因为真实项目通常不只存在一种消费方式。CSS 变量适合页面样式,JSON 适合设计 token 平台,JS 常量更适合前端主题配置和组件逻辑。
相关工具
你还可以继续使用其他已经可用的颜色主题与变量整理工具。