currentColor en CSS : le mot-clé qui recopie la couleur du texte

currentColor est un mot-clé CSS qui reprend la couleur du texte en cours, pratique pour qu'une bordure ou une icône suive automatiquement cette couleur.
4 min de lecture
Believemy logo

Une icône SVG placée à côté d'un lien doit souvent partager exactement sa couleur, y compris quand cette couleur change au survol. Écrire la même valeur hexadécimale dans le CSS du lien et dans celui de l'icône fonctionne, jusqu'au jour où l'une des deux couleurs est modifiée sans que l'autre suive. currentColor supprime purement et simplement ce doublon.

C'est un mot-clé de couleur comme un autre pour le navigateur, sauf qu'il ne pointe vers aucune teinte fixe : il va chercher la valeur de color déjà calculée sur l'élément où il est utilisé.


Définition

currentColor est un mot-clé CSS qui reprend la valeur actuelle de la propriété Couleur CSS sur l'élément concerné. Il s'utilise partout où une couleur est attendue : bordure, ombre, arrière-plan, ou remplissage d'un SVG.

CSS
.bouton {
  color: #1a73e8;
  border: 2px solid currentColor; /* prend #1a73e8, sans le répéter */
}

.bouton:hover {
  color: #0d47a1; /* la bordure suit automatiquement, sans ligne supplémentaire */
}


Cas d'usage : une icône SVG qui suit le texte

Un SVG intégré directement dans le HTML, plutôt que chargé comme image, peut recevoir du CSS comme n'importe quel autre élément. Donner à son remplissage la valeur currentColor le fait suivre la couleur du texte voisin sans jamais dupliquer la valeur.

CSS
.lien-icone {
  color: teal;
}

.lien-icone svg {
  fill: currentColor; /* l'icône prend la teinte du lien */
}

La même logique s'applique à une variable CSS : lui donner directement la valeur currentColor la fait suivre le texte partout où elle est ensuite utilisée, ce qui évite de répéter le mot-clé sur chaque propriété concernée.

Bon à savoirLa valeur initiale de border-color, quand elle n'est pas précisée du tout, est déjà currentColor. Écrire border: 2px solid; sans indiquer de couleur donne donc une bordure qui suit le texte automatiquement, un comportement par défaut que peu de développeurs connaissent.


Où currentColor fonctionne, et où il s'arrête

currentColor fonctionne sur n'importe quelle propriété qui attend une couleur, y compris à l'intérieur d'un Dégradé CSS comme linear-gradient(currentColor, transparent), ou dans un box-shadow. Il s'arrête en revanche à la frontière d'un document séparé : un SVG chargé via une balise img ne voit jamais le CSS de la page qui l'affiche, currentColor y reste donc sans effet.


Cas d'usage : un contour de focus qui suit le texte

Un contour visible au clavier sur l'élément actif est une exigence d'accessibilité, mais choisir sa couleur à la main pour chaque composant oblige à la tenir à jour à chaque évolution de la charte graphique. Donner à cet outline la valeur currentColor garantit qu'il reste toujours assorti à la couleur du texte de l'élément concerné, sans jamais risquer un contour invisible sur un fond dont la couleur a changé entre-temps.

CSS
.lien:focus-visible {
  outline: 3px solid currentColor;
  outline-offset: 2px;
}

Ce réglage profite particulièrement d'un thème sombre : la couleur du texte change entre les deux thèmes, et le contour de focus la suit automatiquement, sans qu'aucune règle supplémentaire n'ait besoin d'être écrite spécifiquement pour le mode sombre, ni pour tout autre thème ajouté plus tard sur le même site.


Questions fréquentes

QuestioncurrentColor fonctionne-t-il dans un fichier SVG chargé en tant qu'image ?

Non, un SVG chargé avec <img src="icone.svg"> se comporte comme une image opaque, isolée du CSS de la page. currentColor n'y a alors aucune valeur à récupérer. Seul un SVG intégré directement dans le HTML, ou importé comme composant, hérite réellement de la couleur ambiante.

QuestionPeut-on utiliser currentColor dans un dégradé ?

Oui, sans restriction particulière : background: linear-gradient(currentColor, transparent) fonctionne comme avec n'importe quelle autre couleur, et suit lui aussi les changements de color sur l'élément.

QuestioncurrentColor se met-il à jour si la couleur change en JavaScript ?

Oui, immédiatement : currentColor ne capture pas une valeur figée au chargement de la page, il consulte la couleur calculée à chaque fois qu'elle est nécessaire, y compris après une modification par script ou par une variable CSS.

Termes connexes

Découvrez notre glossaire HTML et CSS

Parcourez les termes et définitions les plus couramment utilisés dans le domaine du développement HTML et CSS.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.