Учитывая следующий код HTML / SASS:
<div class="a">hello</div>
%color {
color: blue;
}
.a {
color: red;
}
.a.a {
@extend %color;
}
Я ожидал, что полученный цвет будет синим (из-за более специфического .a.a
селектора 1 ) с выводом чего-либокак это:
.a.a {
color: blue;
}
.a {
color: red;
}
Но на самом деле результирующий цвет - красный, с выводом SASS:
.a {
color: blue;
}
.a {
color: red;
}
Я нахожу это довольно нелогичным!
ПочемуSASS рефакторинг моего .a.a
селектора на .a
?
На всякий случай, если вы мне не верите, вот демонстрационная программа codepen (нажмите для просмотра скомпилированного css, чтобы увидеть вывод CSS)
ПРИМЕЧАНИЕ:
Этот «рефакторинг» селектора происходит только в объявлениях в пределах расширения.
Так что вследующий SASS:
%color {
color: blue;
}
.a.a {
@extend %color;
position: relative;
}
Вывод:
.a {
color: blue;
}
.a.a {
position: relative;
}
( Codepen demo )
1 См. спецификацию :
Примечание. Повторные вхождения одного и того же простого селектора допускаются и повышают специфичность.