在@each 中使用变量值
Use variable value in @each
我想在@each: 中使用一个变量值来为不同的状态创建 类。
但是SASS不要使用值,它放在变量名中。
具有此 SASS 语法:
$success: green;
$warning: yellow;
$danger: red;
$information: steelblue;
@mixin theme ($color) {
&:checked {
background: $color;
}
@each $theme in success, warning, danger, information {
.checkbox--#{$theme} {
@include theme($theme);
}
}
mixin 将创建
而不是使用 $warning 值
color: warning
我该如何解决?
SCSS 中没有动态变量名,但您可以使用 Map 代替:
$success: green;
$warning: yellow;
$danger: red;
$information: steelblue;
@mixin theme ($color) {
&:checked {
background: $color;
}
}
$themes: (
success $success,
warning $warning,
danger $danger,
information $information
);
@each $theme, $color in $themes {
.checkbox-#{$theme} {
@include theme($color);
}
}
为了完整起见,如果您使用的是不支持它们的真正旧版本的 SCSS,您可以使用嵌套的 Lists and the nth
函数。
...
$themes: (
(success $success),
(warning $warning),
(danger $danger),
(information $information)
);
@each $pair in $themes {
$theme: nth($pair, 1);
$color: nth($pair, 2);
.checkbox-#{$theme} {
@include theme($color);
}
}
两者将产生相同的输出:
.checkbox-success:checked {
background: green;
}
.checkbox-warning:checked {
background: yellow;
}
.checkbox-danger:checked {
background: red;
}
.checkbox-information:checked {
background: steelblue;
}
我想在@each: 中使用一个变量值来为不同的状态创建 类。 但是SASS不要使用值,它放在变量名中。
具有此 SASS 语法:
$success: green;
$warning: yellow;
$danger: red;
$information: steelblue;
@mixin theme ($color) {
&:checked {
background: $color;
}
@each $theme in success, warning, danger, information {
.checkbox--#{$theme} {
@include theme($theme);
}
}
mixin 将创建
而不是使用 $warning 值color: warning
我该如何解决?
SCSS 中没有动态变量名,但您可以使用 Map 代替:
$success: green;
$warning: yellow;
$danger: red;
$information: steelblue;
@mixin theme ($color) {
&:checked {
background: $color;
}
}
$themes: (
success $success,
warning $warning,
danger $danger,
information $information
);
@each $theme, $color in $themes {
.checkbox-#{$theme} {
@include theme($color);
}
}
为了完整起见,如果您使用的是不支持它们的真正旧版本的 SCSS,您可以使用嵌套的 Lists and the nth
函数。
...
$themes: (
(success $success),
(warning $warning),
(danger $danger),
(information $information)
);
@each $pair in $themes {
$theme: nth($pair, 1);
$color: nth($pair, 2);
.checkbox-#{$theme} {
@include theme($color);
}
}
两者将产生相同的输出:
.checkbox-success:checked {
background: green;
}
.checkbox-warning:checked {
background: yellow;
}
.checkbox-danger:checked {
background: red;
}
.checkbox-information:checked {
background: steelblue;
}