web-dev-qa-db-fra.com

Sass et sélecteur combiné d'enfants

Je viens de découvrir Sass et j'en ai été tellement excité.

Sur mon site Web, j'implémente un menu de navigation sous forme d'arborescence, stylé à l'aide du combinateur enfant (E > F).

Est-il possible de réécrire ce code avec une syntaxe plus simple (ou meilleure) dans Sass?

#foo > ul > li > ul > li > a {
  color: red;
}
115
frarees

Sans le sélecteur d'enfants combiné, vous feriez probablement quelque chose de similaire à ceci:

foo {
  bar {
    baz {
      color: red;
    }
  }
}

Si vous voulez reproduire la même syntaxe avec >, tu pourrais:

foo {
  > bar {
    > baz {
      color: red;
    }
  }
}

Cela compile à ceci:

foo > bar > baz {
  color: red;
}

Ou en sass:

foo
  > bar
    > baz
      color: red
209
Arnaud Le Blanc

Pour cette règle unique que vous avez, il n'y a pas de moyen plus court de le faire. Le combinateur enfant est le même en CSS et en Sass/SCSS et il n'y a pas d'alternative.

Cependant, si vous aviez plusieurs règles comme celle-ci:

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

Vous pouvez les condenser de l'une des manières suivantes:

/* 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; }
}
16
BoltClock