Sur cette page :

  1. Les sélecteurs et les combinaisons
    1. Sélection par nature d’élément, identifiant et classe
    2. Le sélecteur universel
    3. Les sélecteurs combinés
      1. Éléments descendants
      2. Éléments fils
      3. Éléments adjacents

14.1# Sélection par nature d’élément, identifiant et classe

Les sélecteurs en CSS sont très puissants, mais malheureusement, avant la version 7 d’internet explorer, leur support est très incomplet pour cette famille de navigateurs. Nous avons vu plus tôt le sélecteur par élément, celui-ci permet d’appliquer des styles à la totalité des éléments du même type. Il est possible de sélectionner toute balise HTML (et XML).

L’attribut HTML id d’un élément permet de l’identifier de manière unique, en CSS, on peut sélectionner cet élément en préfixant cet identifiant par le caractère # :

  1. <p id="introduction">Ceci est une introduction</p>
  1. #introduction { color: #00FF00; }
  2. /* le texte du paragraphe d'introduction sera en vert */

Il est également possible de définir des classes d’éléments, c’est à dire un ensemble d’éléments (indépendamment de la balise) portant le même sens. Par exemple, il est très courant de définir les classes warning et error qui peuvent s’appliquer à de nombreux éléments, comme un paragraphe ou un champ de formulaire. En HTML, une classe est définie à l’aide de l’attribut class, en CSS, le nom d’une classe est préfixée par . (le point).

Vous l’aurez compris, un identifiant doit être appliqué à un seul élément d’une page, tandis que la classe peut être appliquée à un nombre quelconque.

  1. <p class="error">Vous devez remplir ce champ</p>
  2. <p class="warning">Attention : cette suppression est définitive.</p>
  1. .error { color: #FF0000; } /* les erreurs sont affichées en rouge */
  2. .warning { color: #FF9900; } /* les alertes sont affichées en orange */

Il est possible de sélectionner des éléments à condition que ceux-ci répondent à plusieurs critères. Par exemple, p#head ou ul.infos.important signifient respectivement “sélectionner les éléments <p> portant l’identifiant head” et “sélectionner les éléments <ul> portant la classe infos et la classe important”.

Ce sélecteur fonctionne correctement avec la plupart des navigateurs.

  • Icone Mozilla Firefox supporté
  • Icone Microsoft Internet Explorer supporté
  • Icone Safari supporté
  • Icone Opera supporté
  • Icone Chrome supporté

14.2# Le sélecteur universel

En CSS, il existe un sélecteur universel qui désigne la totalité des éléments de la page : l’astérisque *. Une technique répandue consiste à utiliser cet élément pour annuler certains styles par défaut des navigateurs, en particulier les marges.

14.3# Les sélecteurs combinés

Il est possible de concevoir des combinaisons de sélecteurs, afin de naviguer dans l’arbre des éléments HTML.

14.3.1# Éléments descendants

Plusieurs sélecteurs séparés par des espaces (selecteurA selecteurB) correspondent à la sélection d’éléments descendants, par exemple #contenu div.article p sélectionne l’ensemble des éléments <p> contenu dans des éléments <div> de la classe article, eux-même situés dans l’élément portant l’identifiant contenu.

  • Icone Mozilla Firefox supporté
  • Icone Microsoft Internet Explorer supporté
  • Icone Safari supporté
  • Icone Opera supporté
  • Icone Chrome supporté

14.3.2# Éléments fils

La syntaxe du selecteur sélecteurA > sélecteurB permet d’appliquer une règle sur l’ensemble des éléments sélectionnés par sélecteurB enfants de sélecteursA. Dans l’exemple suivant :

  1. <div id="contenu">
  2. <p>Paragraphe 1</p>
  3. <p>Paragraphe 2</p>
  4. <div class="note">
  5. <p>Paragraphe 3</p>
  6. <p>Paragraphe 4</p>

Les éléments sélectionnés par div#contenu > p sont les deux premiers paragraphes. Les deux derniers n’étant pas des enfants mais des descendants indirects de l’élement div#contenu.

  • Icone Mozilla Firefox supporté
  • Icone Microsoft Internet Explorer À partir de la version 7
  • Icone Safari supporté
  • Icone Opera supporté
  • Icone Chrome supporté

14.3.3# Éléments adjacents

Le sélecteur adjacent répond à la syntaxe SelecteurA + SelecteurB. Ceci permet de sélectionner les éléments sélectionnés par SelecteurB si ceux-ci suivent un élément sélectionné par SelecteurA. Deux éléments adjacents sont sur le même nœud (ils possède le même parent) et se suivent :

  1. /* Le paragraphe suivant une image sera en italique */
  2. img + p { font-style: italic; }
  1. <p>Voici une image :</p>
  2. <img src="./image.png" alt="description alternative de l'image" />
  3. <p>Image 1 : ceci est une légende est sera affiché en italique.</p>
  4. <p>Voilà, vous avez vu une image et sa légende !</p>
  5. <img src="./image2.png" alt="un autre texte" />
  6. <p>Ce paragraphe n'est pas adjacent à l'image n°2, puisque les deux éléments n'ont pas le même père.</p>

Dans cet exemple, seul le second paragraphe sera en italique.

  • Icone Mozilla Firefox supporté
  • Icone Microsoft Internet Explorer À partir de la version 7
  • Icone Safari supporté
  • Icone Opera supporté
  • Icone Chrome supporté