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