Sélecteurs imbriqués en CSS

En CSS, les sélecteurs imbriqués permettent de cibler des éléments spécifiques en fonction de leur position ou de leur relation hiérarchique dans le DOM (Document Object Model). Voici une explication simple suivie d’un exercice.


Exemple 1 : .parent .enfant .petitenfant

.parent .enfant .petitenfant {
    color: red;
}

Analyse :

Exemple HTML :

<div class="parent">
    <div class="enfant">
        <p class="petitenfant">Texte rouge (car il respecte la hiérarchie).</p>
    </div>
</div>

Attention :

Si la structure n’est pas respectée, l’élément .petitenfant ne sera pas affecté. Par exemple, dans ce cas, la règle ne s’appliquera pas :

<div class="parent">
    <p class="petitenfant">Ce texte ne sera pas rouge (hors hiérarchie).</p>
</div>

Exemple 2 : .parent .petitenfant

.parent .petitenfant {
    color: red;
}

Analyse :

Exemple HTML :

<div class="parent">
    <p class="petitenfant">Texte rouge (sans besoin de .enfant).</p>
</div>

Exemple 3 : p .nomdeclass et .nomdeclass p

Cas 1 : p .nomdeclass

p .nomdeclass {
    color: red;
}
<p>
    <span class="nomdeclass">Texte rouge (contenu dans un paragraphe).</span>
</p>

Cas 2 : .nomdeclass p

.nomdeclass p {
    color: red;
}
<div class="nomdeclass">
    <p>Texte rouge (paragraphe dans .nomdeclass).</p>
</div>

Exercice

Objectif :

Comprendre les différences entre ces sélecteurs CSS et leur effet sur la structure HTML.

Étape 1 : Créer le fichier HTML dans un dossier « chapitre-7.5 »

Explication sur la balise <div> :

Dans cet exercice, on utilise la balise <div>, qui sert de diviseur ou conteneur pour regrouper des éléments. Cette balise n’a pas de signification sémantique particulière et est utilisée pour structurer la page.

Note : la balise <div> sera abordée plus en détail dans un prochain chapitre pour explorer toutes ses utilisations.

Voici le contenu du fichier index.html :

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Exercice : Sélecteurs imbriqués</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="parent">
        <div class="enfant">
            <p class="petitenfant">Texte 1 : Rouge (structure complète).</p> 
        </div>
        <p class="petitenfant">Texte 2 : Bleu (structure partielle).</p> 
    </div>
    <p>
        <span class="nomdeclass">Texte 3 : Vert (dans un paragraphe).</span> 
    </p>
    <div class="nomdeclass">
        <p>Texte 4 : Orange (paragraphe dans .nomdeclass).</p> 
    </div>
</body>
</html>

Étape 2 : Créer le fichier CSS

Ajoutez ces règles dans style.css :

/* Rouge : uniquement si .petitenfant est dans .enfant, qui est dans .parent */
.parent .enfant .petitenfant {
    color: red;
}

/* Bleu : s'applique à .petitenfant situé directement dans .parent */
.parent .petitenfant {
    color: blue;
}

/* Vert : s'applique à tout élément avec la classe .nomdeclass contenu dans un <p> */
p .nomdeclass {
    color: green;
}

/* Orange : s'applique à tout <p> contenu dans un élément avec la classe .nomdeclass */
.nomdeclass p {
    color: orange;
}

Étape 3 : Tester les résultats

  1. Ouvrir le fichier HTML dans un navigateur.
  2. Observer comment chaque règle CSS affecte les différents éléments en fonction de leur structure et de leur hiérarchie.

Résumé

Ce qu’il faut retenir

Vous voulez modifier uniquement les paragraphes d’une page spécifique, homepage par exemple, avec WordPress et Elementor ?


Une homepage WordPress utilisant Elementor possède la classe home dans la balise <body>, il est donc possible de cibler spécifiquement les paragraphes de cette page dans le CSS.

Voici comment procéder :

.home p {
    color: blue; /* Change la couleur des paragraphes uniquement de la page "home" */
}

Explication

Ce sélecteur garantit que les modifications n’affectent pas les autres pages de votre site.

Pour information

Sachez que chaque page ELEMENTOR possède une classe unique d’identification.
Ci dessous il s’agit d’une page du site web « Papaddle » possédant la classe commune single et possédant la classe unique elementor-page-240.