Apprendre CSS : Ciblage et Sélecteurs

Les sélecteurs CSS permettent de cibler des éléments par tag, class, id, etc. Ces sélections peuvent être complétées de combinateurs, pseudo-classes et pseudo-éléments.

Icône de calendrier
Débutant
9 chapitres

Sélecteurs

Sélecteurs de type

Ces sélecteurs simples permettent de cibler les éléments qui correspondent à la balise indiquée.

Syntaxe : nom-tag

/* Cible tous les paragraphes */
p { ... }

Sélecteurs de classe

Ce sélecteur simple permet de cibler les éléments en fonction de la valeur de leur attribut class.

Syntaxe : .nom-class

/* Cible toutes les balises HTML possédant la classe "btn-red" */
.btn-red { ... }

Sélecteurs d’identifiant

Ce sélecteur simple permet de cibler un élément d’un document en fonction de la valeur de son attribut id.

Syntaxe : #nom-id

/* Cible la balise HTML qui a l'id "menu" */
#menu { ... }

Sélecteurs d’attribut

Ce sélecteur simple permet de cibler des éléments d’un document en fonction de la valeur d’un de leurs attributs.

Syntaxe : [attr], [attr="valeur"]

/* Cible tous les éléments qui possèdent l'attribut "checked" */
[checked] { ... }

/* Cible tous les éléments HTML "input" qui ont le type "password" */
input[type="password"] { ... }

Sélecteur universel

Ce sélecteur permet de cibler tous les nœuds (= balises) d’un document.

Syntaxe : *

/* Cible tous les éléments HTML */
* { ... }

Sélection multiple

Pour appliquer des règles CSS à plusieurs sélecteurs, on les sépare par une virgule.

/* Cible tous les h2 et h3 */
h2, h3 { ... }

Combinateurs

Les combinateurs permettent de combiner des sélecteurs pour un ciblage plus précis.

Éléments descendants

Le combinateur (espace) permet de sélectionner les nœuds qui sont des descendants (pas nécessairement des fils directs) d’un élément donné.

Syntaxe : a b

copié !
/* Cible tous les liens situés dans l'élément qui a l'id "demo" */
#demo a { ... }
copié !
<div id="demo">
	<a href="#">Mon lien</a> <!-- Lui -->
	<p>
		le lien est :
		<a href="#">clic !</a> <!-- Et lui -->
	</p>
</div>
<a href="#">coucou</a>

Éléments fils

Le combinateur > permet de sélectionner les nœuds qui sont des fils directs d’un élément donné.

Syntaxe : a > b

copié !
/* Cible tous les éléments "strong" qui sont des fils directs des paragraphes */
p > strong { ... }
copié !
<p>
	<strong>Texte 1</strong> <!-- Lui -->
	<span class="demo">Texte <strong>2</strong></span>
</p>

Éléments voisins directs

Le combinateur + permet de sélectionner les nœuds qui suivent immédiatement un élément donné.

Syntaxe : a + b

copié !
/* Cible tous les éléments "p" qui suivent immédiatement une balise <div> */
div + p { ... }
copié !
<div>...</div>
<p>Texte 1</p> <!-- Lui -->
<p>Texte 2</p>
<div>
	<p>Texte 3</p>
	<div>...</div>
	<p>Texte 4</p> <!-- Lui -->
</div>

Éléments voisins généraux

Le combinateur ~ permet de sélectionner les nœuds qui suivent (immédiatement ou non).

Syntaxe : a ~ b

copié !
/* Cible tous les éléments "p" qui suivent immédiatement ou non une balise <div> */
div ~ p { ... }
copié !
<div>...</div>
<p>Texte 1</p> <!-- Lui -->
<p>Texte 2</p> <!-- Lui -->
<div>
	<p>Texte 3</p>
	<div>...</div>
	<p>Texte 4</p> <!-- Lui -->
</div>

Pseudo-classes

Les pseudos-classes sont des mots-clés qui peuvent être ajoutés à un sélecteur afin d’indiquer l’état spécifique dans lequel l’élément doit être pour être ciblé par la déclaration.

Syntaxe : selecteur:pseudo-class

Vous trouverez ci-dessous les pseudo-classes principales.

hover

La pseudo-classe :hover permet de spécifier l’apparence d’un élément au moment où l’utilisateur le survole avec le pointeur, sans nécessairement l’activer.

copié !
a:hover {
	color: orange;
}

active

La pseudo-classe :active permet de cibler un élément lorsqu’il est activé par l’utilisateur. Elle permet de fournir un feedback indiquant que l’activation a bien été détectée par le navigateur. Lorsqu’on a une interaction avec un pointeur, il s’agit généralement du moment entre l’appui sur le pointeur et le relâchement de celui-ci.

copié !
a:active {
	color: orange;
}

visited

La pseudo-classe :visited permet de modifier l’aspect d’un lien après que l’utilisateur l’ait visité.

copié !
a:visited {
	color: orange;
}

focus

La pseudo-classe :focus permet de cibler un élément lorsqu’il reçoit le focus (soit il est sélectionné à l’aide du clavier, soit il est activé avec la souris comme par exemple le champ d’un formulaire).

copié !
input:focus {
	border-color: green;
}

Pseudo-éléments

Les pseudo-éléments sont des mots-clés ajoutés à un sélecteur pour mettre en forme certaines parties uniquement de l’élément ciblé par la règle. On ne peut utiliser qu’un seul pseudo-élément dans un sélecteur.

Syntaxe : selecteur::pseudo-element

Vous trouverez ci-dessous les pseudo-éléments principaux.

first-line

Le pseudo-élément ::first-line applique du style à la première ligne d’un élément. La quantité de texte sur la première ligne dépend de nombreux facteurs, comme la largeur des éléments ou du document, mais aussi de la taille du texte.

copié !
p::first-line {
	color: red;
}

first-letter

Le pseudo-élément ::first-letter applique du style à la première lettre de la première ligne d’un élément.

copié !
p::first-letter {
	font-size: 200%;
	font-weight: bold;
}

selection

Le pseudo-élément ::selection permet d’appliquer des règles CSS à une portion du document qui a été sélectionnée par l’utilisateur (via la souris ou un autre dispositif de pointage).

copié !
*::selection {
	background-color: orange;
}

before

Le pseudo-élément ::before crée un élément qui sera le premier enfant de l’élément sélectionné. Il est souvent utilisé pour ajouter du contenu cosmétique à un élément, en utilisant la propriété CSS content.

copié !
button::before {
	content: "→ ";
}

after

Le pseudo-élément ::after crée un élément qui sera le dernier enfant de l’élément sélectionné. Il est souvent utilisé pour ajouter du contenu cosmétique à un élément, en utilisant la propriété CSS content.

copié !
button::after {
	content: " →";
}