UAA 6    CSS

::before et ::after

1. À quoi servent ::before et ::after ?

Ce sont des pseudo-éléments permettant d’ajouter du contenu virtuel avant ou après un élément HTML, sans modifier le code HTML lui-même.

Ils nécessitent toujours la propriété :

content: "";

2. Exemple simple : ajouter du texte avant et après

CSS :


p::before {
    content: "→ ";
}

p::after {
    content: " ✔";
}

HTML :


<p>Bonjour Louis</p>

3. Exemple : ajouter une icône Unicode

CSS :


li::before {
    content: "• ";
    color: red;
}

HTML :


<ul>
    <li>Item 1</li>
    <li>Item 2</li>
</ul>

4. Exemple : créer un badge (pastille de notification)

CSS :


.notification::after {
    content: "3";
    background: red;
    color: white;
    padding: 2px 6px;
    border-radius: 50%;
    margin-left: 8px;
}

HTML :


<span class="notification">Messages</span>

5. Exemple : créer une flèche (triangle CSS)

CSS :


.button::after {
    content: "";
    border-left: 8px solid black;
    border-top: 5px solid transparent;
    border-bottom: 5px solid transparent;
    margin-left: 6px;
}

HTML :


<button class="button">Continuer</button>

6. Exemple : surlignage décoratif

CSS :


h2 {
    position: relative;
}

h2::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 6px;
    background: yellow;
    z-index: -1;
}

HTML :


<h2>Titre important</h2>

7. Exemple : ajouter automatiquement un astérisque aux champs obligatoires

CSS :


input[required]::after {
    content: " *";
    color: red;
}

HTML :


<label>Email >input type="email" required></label>

8. Exemple : tooltip simple (info-bulle)

CSS :


.info::after {
    content: attr(data-tooltip);
    position: absolute;
    background: black;
    color: white;
    padding: 4px 8px;
    border-radius: 4px;
    opacity: 0;
    transition: 0.3s;
    transform: translateY(-10px);
}

.info:hover::after {
    opacity: 1;
    transform: translateY(-20px);
}

HTML :


<span class="info" data-tooltip="Ceci est une info-bulle">Survole-moi</span>

9. Limites importantes


10. Résumé

Pseudo-élément Rôle
::before Ajoute du contenu avant l’élément
::after Ajoute du contenu après l’élément