Sass是否根据主体类更改变量的值?

Sass是否根据主体类更改变量的值?,sass,mixins,Sass,Mixins,我正在尝试创建一个sass mixin,它允许根据添加的类重新定义变量的值。我被困在这个阶段(不起作用),我想知道是否最终可以这样做: $color-1: #9E619B; $color-2: #BB496A; $themecolor: red !default; $color-themes: (    theme1-pages:        (            themecolor: $color-1        )    theme2-pages:        (        

我正在尝试创建一个sass mixin,它允许根据添加的类重新定义变量的值。我被困在这个阶段(不起作用),我想知道是否最终可以这样做:

$color-1: #9E619B;
$color-2: #BB496A;
$themecolor: red !default;
$color-themes: (
   theme1-pages:
       (
           themecolor: $color-1
       )
   theme2-pages:
       (
           themecolor: $color-2
       )
);

@each $name, $theme in $color-themes {
   body.#{$name} {
       $themecolor: map-get ($name, themecolor);
   }
}

我认为您有一个语法错误(
map-get
)和
map-get()
的参数中有一个错误:参数应该分别是
$theme
themecolor
,而不是
$name
themecolor

@each $name, $theme in $color-themes {
   body.#{$name} {
       $themecolor: map-get($theme, themecolor);
   }
}
这是因为
$name
只是键,而
$theme
是对值的引用。如果将代码的固定版本粘贴到:

您应该希望无任何错误地将其返回:

body.theme1-pages {
  color: #9E619B;
}

body.theme2-pages {
  color: #BB496A;
}

首先,请删除
$
变量
之间的所有空格。也在十六进制颜色之间:
#9E619B
。没有空间!那么,您希望从该循环中得到什么输出?如果
$themecolor
是一种颜色=>
$themecolor:$color base!违约
,此规则对我没有意义:
$themecolor:map get($name,themecolor)谢谢,复制/粘贴错误谢谢Terry,你解决了语法问题。但是我想要的是在站点的任何地方自动更改变量的值。例如:h1{color:$themecolor;}和.inner-bottom header:before{background color:$themecolor;}将被编译成body.theme1-pages h1{color:$color-1;}和body.theme1-pages。inner-bottom header:before{background color:$color-1;}@user2822813,然后将这些规则嵌套在
@each
循环中。你不可能全局地改变变量。是的,我就是这么想的。我不能这样做。无论如何,谢谢你的帮助。
body.theme1-pages {
  color: #9E619B;
}

body.theme2-pages {
  color: #BB496A;
}