В Sass &
- это сокращение от «текущего селектора до этой точки», что означает, что вы всегда получите все селекторы, в которые вы вложили, до корня.
Одним из обходных путей было бы colorSet
принять селектор в качестве аргумента, а не смешивать внутри:
.land{
@mixin colorSet($selector){
#{$selector}__fruit{
background:red;
}
#{$selector}--yellow{
#{$selector}__fruit{
background:yellow;
}
}
#{$selector} {
@content; //include content so you can further define styles
}
}
@include colorSet(.tree);
}
Для меня это сильный аргумент для минимизации вложенности в максимально возможной степени (один измного).То, что вы выражаете, если я правильно понимаю, это: «Любой плод желтого дерева, , который растет на земле , должен быть желтым».Может быть, это правильно, но вы ожидаете деревья, которые не растут на суше?Должны ли «желтые деревья, растущие в воде, иметь синие плоды», или это не имеет никакого смысла?
Если убрать вложение, чтобы все, что использует colorSet
, находилось на верхнем уровне, проблема исчезла.