标准答案

  1. CSS 变量也叫自定义属性,写法是 --name: value,使用时通过 var(--name) 引用。
  2. 它是运行时能力,会参与级联、继承和作用域规则,可以被主题类、媒体查询、内联样式和 JavaScript 动态修改。
  3. Sass/Less 变量是构建期变量,编译成 CSS 后就会被替换成具体值,浏览器不知道变量存在。
  4. 所以 Sass/Less 更适合构建期计算、循环、函数和静态样式结构;CSS 变量更适合运行时主题、设计 token、用户偏好和动态样式。
  5. 工程里两者可以共存:预处理器负责生成静态结构,CSS 变量负责暴露运行时可变的设计值。

题目解析

这题可以按“构建期 vs 运行时”回答。只要讲清浏览器是否知道变量存在,差异就很清楚。

CSS 变量可以按作用域覆盖,这让组件主题和暗色模式更容易实现。

代码示例

CSS 变量可以在主题类里动态覆盖。

CSS
:root {
  --color-primary: #35ad72;
  --space-card: 16px;
}

.theme-dark {
  --color-primary: #7dd3a8;
}

.button {
  padding: var(--space-card);
  background: var(--color-primary);
}

常见误区

  • 认为 CSS 变量和 Sass 变量完全一样,只是语法不同。
  • 忘记 CSS 变量会继承和级联,导致组件内部变量被外层覆盖。
  • 在需要构建期计算的地方强行用 CSS 变量,导致实现复杂。

作者信息