Les sélecteurs CSS – Partie 4

 

📘 Chapitre 17 : Sélecteurs logiques (81-85)
81. :has() 82. :not() 83. :is() 84. :where() 85. :scope
📙 Chapitre 18 : Pseudo-classes de langage (86-90)
86. :lang() 87. :dir() 88. :local-link 89. :target-within 90. :playing / :paused
📒 Chapitre 19 : Pseudo-classes de ressource (91-95)
91. :fullscreen 92. :picture-in-picture 93. :autofill 94. :user-valid 95. :user-invalid
📕 Chapitre 20 : Sélecteurs expérimentaux (96-100)
96. :has-slotted 97. :state() 98. :nth-col() 99. :nth-last-col() 100. :popover-open

📗 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);
}
Fond simulé pour un élément en plein écran
💡 Utilisez backdrop-filter pour des effets de flou modernes sur les modals.

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;
}
Bouton stylisé via part()

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;
}
Exemple de sous-titre stylisé

📘 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;
}
img Article avec image (fond bleu)
Article sans image (fond blanc)

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)

💡 Idéal pour des styles par défaut facilement surchargeables.

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;
}
Élément avec portée

📙 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;
}
Contenu cible à l'intérieur

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;
}
Vidéo en lecture (simulation)

📒 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;
}
Simulation d'élément en plein écran

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);
}
Vidéo en mode PiP (simulation)

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;
}
Composant avec image dans slot

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);
}
Toggle switch à l'état "checked"

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);
}
Popover ouvert (simulation)
💡 Le sélecteur :popover-open est une nouvelle fonctionnalité CSS pour les popovers natifs.

📝 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
آخر تعديل: الاثنين، 15 يونيو 2026، 6:04 PM