📗 Chapitre 16 : Pseudo-éléments avancés
76 Fond d'élément modal ::backdrop
📖 Définition : Style l'arrière-plan des éléments en plein écran (dialog, vidéo fullscreen, modal).
video::backdrop {
background: linear-gradient(135deg, #1a1a2e, #16213e);
}
dialog::backdrop {
background: rgba(0,0,0,0.8);
backdrop-filter: blur(5px);
}
77 Placeholder stylisé ::placeholder
📖 Définition : Style le texte indicatif (placeholder) dans les champs de formulaire.
input::placeholder {
color: #e74c3c;
font-style: italic;
font-size: 0.9em;
}
textarea::placeholder {
color: #3498db;
letter-spacing: 1px;
}
78 Bouton de fichier ::file-selector-button
📖 Définition : Style le bouton "Parcourir" des champs de type file.
input::file-selector-button {
background: #2c3e66;
color: white;
border: none;
padding: 8px 16px;
border-radius: 6px;
cursor: pointer;
}
input::file-selector-button:hover {
background: #1a2a4a;
}
79 Partie de composant ::part()
📖 Définition : Style des parties exposées d'un Web Component (Shadow DOM).
custom-element::part(button) {
background: #3498db;
border-radius: 8px;
}
80 Sous-titres ::cue
📖 Définition : Style les sous-titres (WebVTT) dans les balises vidéo.
video::cue {
background: rgba(0,0,0,0.7);
color: #f1c40f;
font-size: 1.2em;
}
video::cue(.speaker1) {
color: #3498db;
}
📘 Chapitre 17 : Sélecteurs logiques
81 Parent contenant :has()
📖 Définition : Sélectionne un élément parent qui contient un certain enfant.
article:has(img) {
background: #e8f4fd;
padding: 15px;
border-radius: 8px;
}
li:has(ul) {
font-weight: bold;
}
82 Négation :not()
📖 Définition : Sélectionne les éléments qui ne correspondent pas au sélecteur.
button:not(.primary) {
background: #95a5a6;
}
input:not([type="submit"]) {
border: 1px solid #ccc;
}
83 Regroupement :is()
📖 Définition : Regroupe plusieurs sélecteurs avec la spécificité la plus haute.
:is(header, main, footer) p {
margin: 1em 0;
}
:is(.card, .article) :is(h2, h3) {
color: #2c3e66;
}
Titre dans une carte
84 Regroupement sans spécificité :where()
📖 Définition : Similaire à :is() mais avec une spécificité nulle.
:where(.reset, .base) p {
margin: 0;
padding: 0;
}
Paragraphe sans marges (spécificité nulle)
85 Portée :scope
📖 Définition : Représente l'élément qui sert de portée/référence.
.parent :scope {
border-left: 3px solid #3498db;
padding-left: 10px;
}
📙 Chapitre 18 : Pseudo-classes de langage
86 Langue :lang()
📖 Définition : Sélectionne les éléments selon leur langue.
p:lang(fr) {
quotes: "«" "»";
}
p:lang(en) {
quotes: "“" "”";
}
html:lang(ar) {
direction: rtl;
}
« Bonjour le monde ! »
“Hello world!”
87 Direction du texte :dir()
📖 Définition : Sélectionne selon la direction du texte (ltr/rtl).
:dir(ltr) {
text-align: left;
}
:dir(rtl) {
text-align: right;
}
Texte de gauche à droite (ltr)
نص من اليمين إلى اليسار (rtl)
88 Lien local :local-link
📖 Définition : Sélectionne les liens qui pointent vers la même page (ancres).
a:local-link {
text-decoration: underline;
font-weight: bold;
}
a:local-link:hover {
background: #f9e79f;
}
89 Cible à l'intérieur :target-within
📖 Définition : Sélectionne un élément lorsqu'un de ses enfants est la cible.
section:target-within {
background: #d5f5e3;
border-left: 4px solid #2ecc71;
}
90 Média en lecture/pause :playing / :paused
📖 Définition : Sélectionne les éléments multimédia en lecture ou en pause.
video:playing {
border: 2px solid #2ecc71;
}
video:paused {
opacity: 0.8;
}
audio:playing {
box-shadow: 0 0 10px #3498db;
}
📒 Chapitre 19 : Pseudo-classes de ressource
91 Plein écran :fullscreen
📖 Définition : Sélectionne un élément lorsqu'il est en mode plein écran.
video:fullscreen {
width: 100vw;
height: 100vh;
object-fit: contain;
}
:fullscreen {
background: black;
}
92 Image dans l'image :picture-in-picture
📖 Définition : Sélectionne une vidéo en mode picture-in-picture.
video:picture-in-picture {
border-radius: 12px;
box-shadow: 0 4px 20px rgba(0,0,0,0.3);
}
93 Auto-rempli :autofill
📖 Définition : Sélectionne les champs auto-remplis par le navigateur.
input:autofill {
background: linear-gradient(to right, #f9e79f, #f9e79f);
background-attachment: fixed;
}
94 Valide après interaction :user-valid
📖 Définition : Sélectionne les champs valides après interaction utilisateur.
input:user-valid {
border-color: #2ecc71;
background: #d5f5e3;
}
95 Invalide après interaction :user-invalid
📖 Définition : Sélectionne les champs invalides après interaction utilisateur.
input:user-invalid {
border-color: #e74c3c;
background: #fdebd0;
}
📕 Chapitre 20 : Sélecteurs expérimentaux
96 Slot distribué :has-slotted
📖 Définition : Sélectionne les composants contenant des éléments distribués dans un slot.
component:has-slotted(img) {
border: 2px solid #3498db;
}
97 État personnalisé :state()
📖 Définition : Sélectionne les éléments personnalisés en fonction de leurs états internes.
toggle-switch:state(checked) {
background: #2ecc71;
}
accordion-item:state(expanded) {
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
98 Nième colonne :nth-col
📖 Définition : Sélectionne la n-ième colonne dans un tableau ou une grille.
table :nth-col(2) {
background: #e8f4fd;
}
.grid :nth-col(odd) {
background: #f8f9fa;
}
| Col1 | Col2 (ciblée) | Col3 |
| A | B | C |
99 Nième colonne depuis la fin :nth-last-col
📖 Définition : Sélectionne la n-ième colonne depuis la fin.
table :nth-last-col(2) {
background: #fdebd0;
}
| Col1 | Avant-dernière col | Dernière col |
100 Popover ouvert :popover-open
📖 Définition : Sélectionne les éléments popover lorsqu'ils sont ouverts.
.popover-content:popover-open {
animation: fadeIn 0.3s ease;
border: none;
border-radius: 12px;
box-shadow: 0 4px 20px rgba(0,0,0,0.2);
}
📝 Tableau récapitulatif (Sélecteurs 76 à 100)
| # | Sélecteur | Description |
|---|---|---|
| 📗 Chapitre 16 : Pseudo-éléments avancés | ||
| 76 | ::backdrop |
Fond d'élément modal/plein écran |
| 77 | ::placeholder |
Style du texte indicatif |
| 78 | ::file-selector-button |
Bouton de sélection de fichier |
| 79 | ::part() |
Partie exposée d'un Web Component |
| 80 | ::cue |
Sous-titres vidéo |
| 📘 Chapitre 17 : Sélecteurs logiques | ||
| 81 | :has() |
Parent contenant un enfant |
| 82 | :not() |
Négation |
| 83 | :is() |
Regroupement (spécificité haute) |
| 84 | :where() |
Regroupement (spécificité nulle) |
| 85 | :scope |
Portée de référence |
| 📙 Chapitre 18 : Pseudo-classes de langage | ||
| 86 | :lang() |
Langue du texte |
| 87 | :dir() |
Direction du texte |
| 88 | :local-link |
Lien local (ancre) |
| 89 | :target-within |
Cible à l'intérieur |
| 90 | :playing / :paused |
Média en lecture/pause |
| 📒 Chapitre 19 : Pseudo-classes de ressource | ||
| 91 | :fullscreen |
Mode plein écran |
| 92 | :picture-in-picture |
Mode image dans l'image |
| 93 | :autofill |
Champ auto-rempli |
| 94 | :user-valid |
Valide après interaction |
| 95 | :user-invalid |
Invalide après interaction |
| 📕 Chapitre 20 : Sélecteurs expérimentaux | ||
| 96 | :has-slotted |
Contient des éléments distribués |
| 97 | :state() |
État personnalisé d'un composant |
| 98 | :nth-col() |
Nième colonne |
| 99 | :nth-last-col() |
Nième colonne depuis la fin |
| 100 | :popover-open |
Popover ouvert |