Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

light-dark()

Baseline 2024
Newly available

Since ⁨May 2024⁩, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

La fonction de type <color> CSS light-dark() permet de définir deux couleurs pour une propriété : elle retourne l'une des deux couleurs selon que le·a développeur·euse a défini un thème clair ou sombre, ou que l'utilisateur·rice a choisi un thème clair ou sombre, sans avoir besoin d'encapsuler les couleurs dans une requête media feature prefers-color-scheme. Les utilisateur·ice·s peuvent indiquer leur préférence de thème via les réglages de leur système d'exploitation (par exemple, mode clair ou sombre) ou de leur agent utilisateur. La fonction light-dark() permet de fournir deux valeurs de couleur, toute valeur <color> étant acceptée. La fonction CSS light-dark() retourne la première valeur si la préférence de l'utilisateur·rice est « clair » ou si aucune préférence n'est définie, et la seconde si la préférence est « sombre ».

Pour activer la prise en charge de la fonction light-dark(), la propriété color-scheme doit avoir la valeur light dark, généralement définie sur la pseudo-classe :root.

css
:root {
  color-scheme: light dark;
}
body {
  color: light-dark(#333b3c, #efefec);
  background-color: light-dark(#efedea, #223a2c);
}

Syntaxe

css
/* Couleurs nommées */
color: light-dark(black, white);

/* Couleurs RGB */
color: light-dark(rgb(0 0 0), rgb(255 255 255));

/* Variables personnalisées */
color: light-dark(var(--light), var(--dark));

Valeurs

Notation fonctionnelle : light-dark(couleur-claire, couleur-sombre)

couleur-claire

Une valeur <color> à utiliser pour color-scheme clair.

couleur-sombre

Une valeur <color> à utiliser pour color-scheme sombre.

Syntaxe formelle

<light-dark()> = 
light-dark( <color> , <color> )

Exemple

Définir des couleurs selon le thème

Par défaut dans les navigateurs qui la prennent en charge, la couleur retournée par la fonction de couleur light-dark() dépend de la préférence de l'utilisateur·rice définie dans les paramètres du système d'exploitation (par exemple, mode clair ou sombre) ou dans les réglages de l'agent utilisateur. Vous pouvez aussi modifier ce réglage dans les outils de développement du navigateur.

HTML

On inclut trois sections pour cibler les couleurs claires, sombres et celles sélectionnées selon la préférence de l'utilisateur·rice.

html
<h1>La fonction CSS <code>light-dark()</code></h1>
<section>
  <h2>Automatique</h2>
  <p>Cette section réagit au réglage du système ou de l'agent utilisateur.</p>
</section>
<section class="light">
  <h2>Clair</h2>
  <p>Cette section sera claire grâce à <code>color-scheme: light;</code>.</p>
</section>
<section class="dark">
  <h2>Sombre</h2>
  <p>Cette section sera sombre grâce à <code>color-scheme: dark;</code>.</p>
</section>

CSS

On définit des couleurs pour les thèmes clair et sombre, puis on définit aussi color-scheme sur :root pour activer la fonction light-dark() sur tout le document.

css
:root {
  /* doit être défini pour basculer entre clair et sombre */
  color-scheme: light dark;

  --light-bg: ghostwhite;
  --light-color: darkslategray;
  --light-code: tomato;

  --dark-bg: darkslategray;
  --dark-color: ghostwhite;
  --dark-code: gold;
}
* {
  background-color: light-dark(var(--light-bg), var(--dark-bg));
  color: light-dark(var(--light-color), var(--dark-color));
}
code {
  color: light-dark(var(--light-code), var(--dark-code));
}

En plus d'activer la fonction light-dark(), la propriété color-scheme permet d'outrepasser le thème de l'utilisateur·rice pour certaines sections du document. Forcer une section à n'utiliser qu'un thème clair ou sombre se fait en définissant la propriété color-scheme à light ou dark.

Note : Cela ne devrait généralement pas être fait, c'est uniquement à titre de démonstration. Si l'utilisateur·rice a exprimé une préférence, il ne faut généralement pas la surcharger.

css
.light {
  /* force le thème clair */
  color-scheme: light;
}
.dark {
  /* force le thème sombre */
  color-scheme: dark;
}

Résultat

Spécifications

Specification
CSS Color Module Level 5
# light-dark

Compatibilité des navigateurs

Voir aussi