← 返回博客

颜色命名规范与变量命名指南

2026-04-20 · 5 分钟阅读

← 返回博客

颜色命名规范与变量命名指南

· 6 分钟阅读

颜色命名的重要性

好的颜色变量命名系统是设计系统可维护性的基石。当你直接使用 HEX 值(如 #4A90E2)而没有命名时,修改品牌颜色就意味着在整个代码库中全局替换这个值,而且完全无法从代码中判断该颜色的用途。好的命名系统让颜色的意图自文档化,让主题切换、品牌更新变得容易。

三种主要命名策略

颜色变量命名主要有三种策略,各有优劣:

两层命名系统的实现

两层命名系统是目前最推荐的方式:第一层(色板层)定义所有可用的颜色值,第二层(语义层)从第一层引用,并赋予语义含义:

/* Tier 1: Color palette (raw values) */
:root {
  --blue-100: hsl(214, 80%, 92%);
  --blue-500: hsl(214, 80%, 52%);
  --blue-700: hsl(214, 80%, 35%);
  --blue-900: hsl(214, 80%, 18%);

  --gray-50:  hsl(220, 15%, 98%);
  --gray-800: hsl(220, 15%, 20%);
}

/* Tier 2: Semantic tokens */
:root {
  --color-primary:        var(--blue-500);
  --color-primary-hover:  var(--blue-700);
  --color-primary-subtle: var(--blue-100);
  --color-bg:             var(--gray-50);
  --color-text:           var(--gray-800);
}

/* Usage in components */
.btn-primary {
  background: var(--color-primary);
  color: white;
}
.btn-primary:hover {
  background: var(--color-primary-hover);
}

大型设计系统的命名实践

不同的大型设计系统有不同的命名约定,了解它们有助于做出更有见识的选择:

命名规范的最佳实践

SCSS 颜色变量的最佳实践

// SCSS: Two-tier color system

// === Tier 1: Color palette ===
$blue-50:   #EFF6FF;
$blue-500:  #3B82F6;
$blue-600:  #2563EB;
$blue-700:  #1D4ED8;

// === Tier 2: Semantic tokens ===
$color-primary:          $blue-500;
$color-primary-hover:    $blue-600;
$color-primary-active:   $blue-700;
$color-primary-focus-ring: rgba($blue-500, 0.4);

// === Component-level tokens ===
$btn-primary-bg:         $color-primary;
$btn-primary-bg-hover:   $color-primary-hover;
$btn-primary-text:       #ffffff;

向 CSS 自定义属性迁移

如果你的项目目前使用 SCSS 颜色变量,建议逐步迁移到 CSS 自定义属性(CSS 变量)。CSS 变量的主要优势是可以在运行时更改(如主题切换),这是 SCSS 变量做不到的。迁移时,可以先用 CSS 变量替换语义层,保留 SCSS 变量作为原始颜色值,再逐步将组件的样式从 SCSS 变量改为 CSS 变量。

立即尝试在线工具,无需安装,免费使用。

打开工具 →

立即免费使用相关工具

免费使用 →