Sass и комбинированный детский селектор
Я только что обнаружил Sass, и я был так взволнован этим.
На моем веб-сайте я реализую древовидное меню навигации, стилизованное с использованием дочернего комбинатора (E > F
).
Есть ли способ переписать этот код с более простым (или лучшим) синтаксисом в Sass?
#foo > ul > li > ul > li > a {
color: red;
}
Ответы
Ответ 1
Без комбинированного дочернего селектора вы, вероятно, будете делать что-то похожее на это:
foo {
bar {
baz {
color: red;
}
}
}
Если вы хотите воспроизвести тот же синтаксис с помощью >
, вы могли бы:
foo {
> bar {
> baz {
color: red;
}
}
}
Это скомпилируется следующим образом:
foo > bar > baz {
color: red;
}
Или в sass:
foo
> bar
> baz
color: red
Ответ 2
Для этого единственного правила у вас нет более короткого способа сделать это. Детский комбинатор одинаков в CSS и Sass/SCSS, и альтернативы ему нет.
Однако, если у вас было несколько правил:
#foo > ul > li > ul > li > a:nth-child(3n+1) {
color: red;
}
#foo > ul > li > ul > li > a:nth-child(3n+2) {
color: green;
}
#foo > ul > li > ul > li > a:nth-child(3n+3) {
color: blue;
}
Вы можете сконденсировать их с одним из следующих:
/* Sass */
#foo > ul > li > ul > li
> a:nth-child(3n+1)
color: red
> a:nth-child(3n+2)
color: green
> a:nth-child(3n+3)
color: blue
/* SCSS */
#foo > ul > li > ul > li {
> a:nth-child(3n+1) { color: red; }
> a:nth-child(3n+2) { color: green; }
> a:nth-child(3n+3) { color: blue; }
}