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,您可以使用嵌套列表和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;
}