#css #sass
#css #sass
Вопрос:
Это работает в МЕНЬШЕМ:
.block {
amp;--modifer1 {
background: red;
}
amp;--modifier2 {
background: blue;
}
// If block has both modifiers
amp;--modiferamp;--modifier2 {
background: orange;
}
}
И последний селектор становится (как и ожидалось);
.block--modifer.block--modifier2 {
background: orange;
}
Можно попробовать здесь:
http://winless.org/online-less-compiler
Но тот же код не работает для Sass, который можно попробовать здесь:
Вместо этого вы получаете ошибку:
Invalid CSS after "amp;--modifer": expected "{", was "amp;--modifier2"
"amp;--modifier2" may only be used at the beginning of a compound selector.
Как вы пишете этот простой пример с помощью Sass?
Комментарии:
1. где ваш код sass?
2. Это мой вопрос =)
3. Я думаю, вам нужен микс
4. Вы всегда можете использовать селектор с двойным вложением, с одним для
amp;.block--modifier2
в блоке дляamp;--modifer
Ответ №1:
Вы можете легко написать его, интерполируя родительский селектор amp;
.
.block {
amp;--modifer1 {
background: red;
}
amp;--modifier2 {
background: blue;
}
// Just interpolate parent selector
amp;--modifer#{amp;}--modifier2 {
background: orange;
}
}
Который генерирует следующий css
.block--modifer1 {
background: red; }
.block--modifier2 {
background: blue; }
.block--modifer.block--modifier2 {
background: orange; }
Комментарии:
1. Никаких проблем ! Рад помочь 🙂
Ответ №2:
Вы можете сделать вот так
Демонстрация —http://www.sassmeister.com/gist/d75b6e741a1ec0d58a544abfc72c6ab7
.block{
amp;--modifer1 {
background: red;
}
amp;--modifier2 {
background: blue;
}
amp;--modifier {
@at-root amp;#{amp;}2 {
color:orange;
}
}
}
Вывод
.block--modifer1 {
background: red;
}
.block--modifier2 {
background: blue;
}
.block--modifier.block--modifier2 {
color: orange;
}