Par défaut le langage CSS ne permet pas de faire d'imbrications, communément appelé "nesting" en anglais. Il est donc parfois nécessaire de répéter un sélecteur plusieurs fois dans son code CSS.
Heureusement, Sass apporte cette fonctionnalité à CSS, ce qui permet d'accélérer l'écriture de feuilles de styles et de simplifier leur lecture.
Afin d'éviter de répéter le sélecteur .list à plusieurs reprises, il est possible d'écrire en SCSS:
Ce qui générera le code CSS suivant ⏬
Niveaux d'imbrications
Vous pouvez imbriquer des éléments ainsi à l'infini. Dans l'exemple précédent, nous avions un seul niveau d'imbrication.
Voici maintenant un exemple contenant deux niveaux d'imbrications:
Ce qui générera le code CSS suivant ⏬
Voici un autre exemple d'utilisation.
Dans l'exemple précédent, lorsqu'on compile le SCSS en CSS, ça donnera le code suivant:
Les imbrications sont compatibles avec tous les sélecteurs CSS avancés.
Par exemple:
Générera le code CSS suivant ⏬
Le sélecteur de parent & est un sélecteur spécial inventé par Sass permettant de faire référence au sélecteur parent courant.
Avant de démontrer le sélecteur parent, rappelez vous que tout sélecteur imbriqué dans un autre se fait convertir par défaut en enfant du premier.
Autrement dit:
Générera le code CSS suivant ⏬
Remarquez l'espace entre les deux sélecteurs indiquant que .selecteur2 est enfant de .sélecteur1. Il sera donc appliqué à des balises imbriquées comme dans le code suivant:
Revenons au sélecteur parent, grâce à celui-ci &, il est possible de contourner ce comportement.
Si on ajoute un & devant le .selecteur2
Générera le code CSS suivant ⏬
Remarquez maintenant l'espace inexistant entre .selecteur1 .selecteur2, cela signifie que le sélecteur 2 s'est appliqué au parent dans l'impbrication Sass. Ce qui en résulte d'un sélecteur css qui vise un élément qui contient les 2 classes comme dans l'exemple html ci-dessous.
Pseudo-classes
Les imbrications Sass sont compatibles avec les pseudo-classes lorsqu'un sélecteur parent est utilisé.
Par exemple:
Générera le code CSS suivant ⏬
Autre exemple de pseudo-classe:
Générera le code CSS suivant ⏬
Remarquez l'utilisation du sélecteur parent &. Celui-ci permet de faire une référence au sélecteur courant, en l'occurence .btn et de lui rabouter directement, sans espace, la pseudo-classe :hover.
Pseudo-éléments
Les imbrications Sass sont compatibles avec les pseudo-éléments lorsqu'un sélecteur parent est utilisé.
Par exemple:
Générera le code CSS suivant ⏬
Renversé
Parfois, il souhaitable de spécifier que notre élément devrait avoir une apparence différente dans un certain contexte.
Par exemple, lorsqu'un bouton est affiché dans un menu, sa couleur de fond pourrait devoir être grise plutôt que bleue. Le sélecteur parent permet de couvrir ce cas de figure sans avoir à quitter le contexte du sélecteur du bouton en utilisant ce sélecteur comme suffix.
Générera le code CSS suivant ⏬