У меня проблема с использованием значений переменных по умолчанию в 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 определена как «красный»! default в миксине foo. Я ожидаю, что импорт миксина установит для $ val значение «красный», если он еще не определен. Однако в class1, где $ val локально определено как 'green', при импорте примеси foo он заменяется на 'red'. В других классах после глобального определения $ val как «черного» импорт миксина работает должным образом, и $ val сохраняет свое уже определенное значение.
Что я делаю не так?