标准答案

  1. Sass / Less 是预处理器,代码会在构建期编译成普通 CSS。
  2. 它们适合模块拆分、嵌套、mixin、函数、循环和构建期静态计算。
  3. CSS 变量是浏览器运行时能力,可以参与级联、继承、主题切换和动态覆盖。
  4. 现代项目里预处理器可以负责生成结构化 CSS,CSS 变量负责暴露可运行时变化的 token。
  5. 如果项目只需要简单样式和主题变量,不一定必须引入预处理器。

题目解析

回答时抓住“构建期 vs 运行时”。浏览器看不到 Sass 变量,但能看到 CSS 自定义属性。

预处理器不会因为 CSS 变量出现就完全失去价值,但它不应该承担运行时主题切换。

代码示例

Sass 可以生成静态结构,CSS 变量保留运行时覆盖能力。

SCSS
$sizes: sm, md, lg;

@each $size in $sizes {
  .button-#{$size} {
    color: var(--button-color);
  }
}

常见误区

  • 认为 Sass 变量和 CSS 变量只是语法不同。
  • 用 Sass 变量做暗色模式,结果运行时无法按用户偏好切换。
  • 为了嵌套写法引入复杂预处理链路,却没有实际工程收益。

作者信息