15
我在跨範圍的Sass中使用變量默認值時遇到問題。我測試的例子是:Sass變量默認範圍
@mixin foo {
$val: 'red' !default;
.bar {
color: $val;
}
}
@include foo;
.class1 {
$val: 'green';
@include foo;
.class11 {
@include foo;
}
}
$val: 'black';
.class2 {
@include foo;
}
.class3 {
$val: 'blue';
@include foo;
}
.class4 {
@include foo;
}
它編譯成:
.bar {
color: "red";
}
.class1 .bar {
color: "red";
}
.class1 .class11 .bar {
color: "red";
}
.class2 .bar {
color: "black";
}
.class3 .bar {
color: "blue";
}
.class4 .bar {
color: "blue";
}
正如你所看到的,變量$ VAL被定義爲「紅色」默認情況下,混入FOO!我預計導入mixin會將$ val設置爲「紅色」,除非已經定義。但是,在class1中,$ val在本地定義爲「綠色」,導入mixin foo時將其用「紅色」覆蓋。在其他類中,在將$ val全局定義爲「黑色」之後,按預期導入mixin作品,$ val保留其已定義的值。
我在做什麼錯?
就像沒有'var'語句的JavaScript一樣! ......該死的。 – iono 2012-11-30 05:11:24
非常討厭的行爲和SASS團隊從JS,IMho借用此範圍的奇怪決定。 – MoMolog 2013-06-14 15:52:39