Css 变量的一部分是动态的

Css 变量的一部分是动态的,css,sass,Css,Sass,我尝试在sass(scss)中执行以下操作 $colors-#{$type} 但我明白了 未定义变量$colors- 我找到了一个参考3.3的来源,他们确实提到了,但是,我找不到解决问题的方法 有办法做到这一点吗 我认为这篇文章有误导性。我在Github上发现的每个问题(例如或)都建议使用地图。其中一位撰稿人写道: 我们决定添加一个关联数据类型(aka map/hash),它将解决这个用例 使用映射和map-get()动态获取样式定义。您可以在mixin、函数或直接使用它。下面的例子 $colo

我尝试在sass(scss)中执行以下操作

$colors-#{$type}

但我明白了

未定义变量$colors-

我找到了一个参考3.3的来源,他们确实提到了,但是,我找不到解决问题的方法

有办法做到这一点吗


我认为这篇文章有误导性。我在Github上发现的每个问题(例如或)都建议使用地图。其中一位撰稿人写道:

我们决定添加一个关联数据类型(aka map/hash),它将解决这个用例

使用映射和
map-get()
动态获取样式定义。您可以在mixin、函数或直接使用它。下面的例子

$colors: (
  "green": #0c0,
  "blue": #00c,
  "red": #c00
);

@mixin my_color($color) {
  color: map-get($colors, $color);
}

@function my_color_func($color) {
  @return map-get($colors, $color);
}

body {
  @include my_color("green");  // use a mixin

  background-color: my_color_func("blue");  // use of a function

  border: 1px solid map-get($colors, "red");  // use directly
}
生成以下css:

body {
  color: #0c0;
  background-color: #00c;
  border: 1px solid #c00;
}

我想不出什么情况下你会这么做。你想做什么?我正在为颜色做一个通用函数,所以它对不同类型(主颜色、文本颜色等)使用不同的贴图,看看我的示例。Il可以通过使用if解决这个问题,但是,如果添加更多的颜色贴图,我必须修改函数,这是一个更干净的方法。我没有走很远的路去解决它@JamesKing