Sass и комбинированный дочерний селектор
Я только что обнаружил Sass, и я был так взволнован этим.
кстати, на моем сайте я реализую древовидное навигационное меню, стилизованное под комбинированный дочерний селектор (E > F
).
есть ли способ переписать этот код в более простой (или лучший) синтаксис на Sass?
#foo > ul > li > ul > li > a {
color: red;
}
2 ответов
без комбинированного дочернего селектора вы, вероятно, сделали бы что-то подобное этому:
foo {
bar {
baz {
color: red;
}
}
}
если вы хотите воспроизвести тот же синтаксис с >
, ты мог бы к этому:
foo {
> bar {
> baz {
color: red;
}
}
}
это компилируется к этому:
foo > bar > baz {
color: red;
}
или в sass:
foo
> bar
> baz
color: red
для этого единственного правила, которое у вас есть, нет более короткого способа сделать это. Дочерний комбинатор одинаков в 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; }
}