Sass是否根据主体类更改变量的值?
我正在尝试创建一个sass mixin,它允许根据添加的类重新定义变量的值。我被困在这个阶段(不起作用),我想知道是否最终可以这样做: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: (
$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;
}