不久前,我创建了一个使用SASS变量和CSS自定义属性组合的项目。我定义了我的Sass变量,然后使用它们来创建我的CSS自定义属性。一切都很好。现在我尝试做同样的事情,使用相同的代码和加载器(Webpack)并且它不起作用,我无法弄清楚原因。
我有一个style.scss
文件,如下所示:
$var1: #ff3344;
h1 { color: $var1; }
:root { --color1: $var1; }
当我使用sass-loader
,css-loader
和style-loader
使用Webpack构建项目时,我得到以下输出:
h1 { color: #ff3344; }
:root { --color1: $var1; }
出于某种原因,$var1
替换h1
而不替换--color1
。
看到我之前没有遇到任何问题,我预计sass-loader
可能是原因。但是我将sass-loader
降级为6.0.7,这与我在该项目中使用的版本相同,但我仍然遇到此问题。当sass-loader
被分配到$var1
时,为什么不--color1
替换<style>
?
答案 0 :(得分:1)
自定义变量值仅支持
#{}
内的SassScript。
例如,如果您想要颜色数组:
$blue: #007bff !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #dc3545 !default;
$orange: #fd7e14 !default;
$yellow: #ffc107 !default;
$green: #28a745 !default;
$teal: #20c997 !default;
$cyan: #17a2b8 !default;
$colors: () !default;
$colors: map-merge((
"blue": $blue,
"indigo": $indigo,
"purple": $purple,
"pink": $pink,
"red": $red,
"orange": $orange,
"yellow": $yellow,
"green": $green,
"teal": $teal,
"cyan": $cyan,
"white": $white,
), $colors);
@each $color, $value in $colors {
--#{$color}: #{$value};
}