You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在@each块中根据其他变量名定义SCSS变量?

如何同时实现SCSS变量导入JS并直接使用普通SCSS变量?

你目前通过映射(map)结合:export将SCSS变量导出到JS的方案,存在SCSS文件中必须用map.get()取值的局限。你尝试用@each循环动态定义普通SCSS变量的方法失败,核心原因是Sass不支持动态创建变量名。

可行解决方案:先定义普通变量,再映射导出

我们可以先定义常规SCSS变量,再将这些变量存入映射,最后通过:export导出到JS。这样既满足SCSS里直接使用变量的需求,也能实现变量向JS的导出:

// 1. 定义普通SCSS变量,直接在SCSS中使用
$someColor: #000;
$anotherColor: #FFF;

// 2. 将变量存入映射,用于导出到JS
$theme-colors: (
  'someColor': $someColor,
  'anotherColor': $anotherColor,
);

// 3. 导出映射中的变量到JS
:export {
  @each $key, $value in $theme-colors {
    #{unquote($key)}: $value;
  }
}

Sass官方说明

用户偶尔希望使用插值来根据另一个变量定义变量名。Sass不允许这样做,因为这会让人们很难一眼看出变量在哪里定义。不过,你可以定义一个从名称到值的映射,然后使用变量访问它。

内容的提问来源于stack exchange,提问作者SageJustus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:05:04