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