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; }
}