Pseudo-éléments CSS
Les pseudo-classes changent l’apparence quand un état change (:hover, :focus). Les pseudo-éléments vont plus loin : vous pouvez styler une partie du texte, ou créer une petite boîte avant ou après le contenu réel — avec un double deux-points (::) et sans balises en plus dans le HTML.
Que signifie pseudo-élément ?
Un pseudo-élément est un mot collé au sélecteur avec ::. Il cible quelque chose qui n’est pas un élément complet dans le markup : la première lettre, la première ligne, ou une boîte générée avant/après le contenu. Pour ::before et ::after, il faut souvent content pour voir quelque chose.
Quatre pseudo-éléments courants
Commencez par ceux-ci. L’ancienne forme à un seul deux-points (:before) marche encore souvent — écrivez quand même la forme moderne en double.
📊 Pseudo-éléments CSS du quotidien
| Pseudo-élément | Ce qu’il stylise | Exemple |
|---|---|---|
::before |
Boîte avant le contenu de l’élément | p::before |
::after |
Boîte après le contenu de l’élément | a::after |
::first-letter |
Première lettre d’un bloc de texte | p::first-letter |
::first-line |
Première ligne d’un bloc de texte | p::first-line |
Avant le contenu — ::before et content
::before crée une boîte virtuelle avant le texte réel. Vous mettez presque toujours content — une chaîne, ou "" pour une boîte vide décorative.
Avant — guillemet ouvrant
css.quote::before {
content: "“";
color: #0f766e;
font-size: 1.5rem;
margin-right: 0.25rem;
}
N’oubliez pas content
Sans content, beaucoup de règles ::before/::after n’affichent rien. Pour une barre de couleur ou une icône en fond, content: "" suffit.
Après le contenu — ::after
::after est la même idée après le contenu — pour une unité, un badge ou un petit suffixe.
Après — indice de lien externe
cssa.external::after {
content: " ↗";
font-size: 0.85em;
}
Ne cachez pas le sens nécessaire ici
Les lecteurs d’écran et certains outils traitent le contenu généré de façon inégale. Ne mettez pas les consignes importantes seulement dans ::before/::after ; gardez le texte réel dans le HTML.
Première lettre — ::first-letter
::first-letter stylise la première lettre d’un bloc de texte — le classique caractère d’ouverture agrandi.
Première lettre — caractère d’ouverture plus grand
css.lead::first-letter {
font-size: 2.5rem;
font-weight: 700;
color: #0f766e;
float: left;
line-height: 1;
margin-right: 0.15em;
}
Première ligne — ::first-line
::first-line stylise seulement la première ligne visible — pas « la première phrase », mais la ligne que le navigateur forme en coupant le texte.
Première ligne — un peu plus forte
css.lead::first-line {
font-weight: 600;
color: #334155;
}
Boîte vide décorative
Parfois vous voulez seulement une bande de couleur sans texte. content: "" suffit.
before vide — bande décorative
css.card::before {
content: "";
display: block;
height: 4px;
background: #0f766e;
margin-bottom: 0.75rem;
}
Bonnes habitudes
- Pseudo-élément = double deux-points (
::before) ; pseudo-classe = simple (:hover) - Mettez
contentsur::before/::aftersi quelque chose doit être visible - Gardez le texte essentiel dans le HTML, pas seulement dans le contenu généré
::first-letteret::first-lineagissent sur des blocs de texte- Préférez
::moderne même si l’ancien:beforemarche encore
Essayez vous-même
- Page courte avec paragraphe
.quote, paragraphe.lead, liena.externalet.cardavec du texte. - Ajoutez
.quote::before { content: "“"; color: #0f766e; }et voyez le guillemet. - Sur le lien class
external:a.external::after { content: " ↗"; }. - Agrandissez
.lead::first-letteren teal ; stylisez.lead::first-lineavecfont-weight: 600. - Ajoutez
.card::before { content: ""; display: block; height: 4px; background: #0f766e; }pour la barre du haut.
Erreurs fréquentes
- Écrire
:beforealors que vous vouliez un état comme:hover— état un deux-points ; boîte générée deux - Oublier
contentet ne rien voir apparaître - Mettre la seule copie d’un avertissement seulement dans
::after - Attendre un miracle de
::first-lettersur un élément vide ou image seule - Confondre
::first-lineavec « première phrase » — le retour à la ligne du navigateur décide
Résumé
- Les pseudo-éléments avec
::stylisent une partie ou une boîte générée ::before/::afteront besoin decontent(chaîne ou"")::first-letteret::first-lineprennent le début du bloc de texte- Le sens critique reste dans le HTML
- Un deux-points = pseudo-classe ; doubles = pseudo-élément
- Entraînez-vous avec guillemet, suffixe de lien et paragraphe lead
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut