Pseudo-classe CSSPseudo-classes

:root

Correspond à l’élément racine du document, en HTML à la balise html. L’emplacement habituel pour les variables CSS de toute la page.

Sur cette page

Exemple

#
CSS
:root {
  --brand: #7c3aed;
  --surface: #18181b;
  --radius: 12px;
}

.card {
  padding: 14px;
  border-left: 4px solid var(--brand);
  border-radius: var(--radius);
  background: var(--surface);
}
Aperçu

Définition et utilisation

#

La pseudo-classe :root sélectionne la racine de l’arbre du document. Sur une page HTML, c’est toujours l’élément <html>, donc :root et html désignent le même élément. Ils diffèrent par leur poids : :root, en tant que pseudo-classe, a une spécificité de (0, 1, 0), tandis que html, en tant que sélecteur de type, n’a que (0, 0, 1).

C’est le plus souvent là que l’on place les variables CSS (propriétés personnalisées) pour toute la page : couleurs de marque, espacements, rayons d’arrondi. Les variables se transmettent vers le bas de l’arbre, donc celles écrites sur :root sont accessibles dans chaque élément via var(--nom).

Dans :root, on place aussi ce qui concerne tout le document : color-scheme, le font-size de base à partir duquel se calculent les unités rem, ou scroll-behavior. Vous changez de thème sombre ou clair en redéfinissant les variables en un seul endroit, par exemple dans @media (prefers-color-scheme: light) ou dans la règle :root[data-theme="light"].

Syntaxe

#
Syntaxe
:root { --nom: valeur; }

Utilisations courantes

#
  • --brand

    Une seule variable de couleur change à la fois le bouton et le badge.
  • --radius

    Le rayon d’arrondi de tous les éléments défini en un seul endroit.
  • --brand et --radius

    Plusieurs variables à la fois forment un thème complet. Les composants ne changent pas, seules les valeurs changent.
  • font-size

    La taille de police de base du document. Le texte exprimé en rem grandit avec elle.

Utilisations courantes en pratique

#

--brand

Une seule variable de couleur change à la fois le bouton et le badge.
:root { --brand: #7c3aed; }

--radius

Le rayon d’arrondi de tous les éléments défini en un seul endroit.
:root { --radius: 999px; }

--brand et --radius

Plusieurs variables à la fois forment un thème complet. Les composants ne changent pas, seules les valeurs changent.
:root { --brand: #10b981; --radius: 12px; }

font-size

La taille de police de base du document. Le texte exprimé en rem grandit avec elle.
:root { font-size: 20px; }

Plus d’exemples

#
Changer de thème avec un seul attribut
CSS
:root {
  --bg: #18181b;
  --fg: #e5e5e5;
}

:root[data-theme="light"] {
  --bg: #f4f4f5;
  --fg: #18181b;
}

.panel {
  background: var(--bg);
  color: var(--fg);
}
Aperçu

Cliquez sur le bouton. Le script ne change que l’attribut data-theme sur l’élément <html>, et les couleurs se remplacent grâce aux variables.

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Nommez les variables selon leur rôle, pas leur valeur : --color-accent plutôt que --purple. Changer de thème n’exigera alors pas de changer les noms.
  • Les variables sur :root sont globales. Définissez sur le composant lui-même les valeurs utiles à un seul composant, par exemple .card { --gap: 12px; }.
  • N’oubliez pas que :root pèse plus que html. La règle html { … } ne redéfinira pas une propriété définie dans :root, même si elle est placée plus bas.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.