L’essentiel en bref
- Le texte dégradé en CSS consiste à peindre un dégradé en arrière-plan de l’élément, à le découper à la forme des lettres avec background-clip: text et à rendre la couleur du texte transparente.
- Réglez toujours d’abord une couleur de texte unie et n’appliquez la couleur transparente que dans un contrôle @supports, pour que les mots ne disparaissent jamais.
- Chaque partie du dégradé doit avoir assez de contraste avec l’arrière-plan : vérifiez l’arrêt le plus clair et le plus sombre, pas un seul.
- Le texte dégradé convient aux courtes lignes d’affichage en grande taille, et fonctionne mal pour le texte courant, les liens et les petits libellés.
- Ajouter box-decoration-break: clone donne à chaque ligne d’un élément en ligne qui passe à la ligne son propre dégradé complet.
Sur cette page
Le texte dégradé en CSS se fait en peignant un dégradé en arrière-plan de l’élément de texte, en découpant cet arrière-plan à la forme des lettres avec background-clip: text, puis en rendant le texte lui-même transparent pour que le dégradé transparaisse. Cela demande trois déclarations, marche dans tous les navigateurs actuels et reste du vrai texte, sélectionnable et indexable, pas une image.
.gradient-text {
background-image: linear-gradient(90deg, #6d28d9, #be185d);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}linear-gradient(90deg, #6d28d9, #be185d)Le reste de ce guide traite de ce que la version en trois lignes fait mal : replis manquants, contraste, texte multi-lignes, jambages coupés, et la question de design de savoir quand le texte dégradé aide vraiment. Pour l’allure des lettres dégradées dans les réseaux sociaux et le travail de marque plutôt que sur le web, voyez les effets de texte.
Une recette robuste de texte dégradé avec replis
Si un navigateur applique color: transparent mais pas le découpage, le texte disparaît. Protégez-vous : donnez à l’élément une couleur unie tirée du dégradé, puis passez à la version transparente seulement quand le navigateur confirme la prise en charge. Ajoutez une réinitialisation pour le mode couleurs forcées, où le système remplace vos couleurs et où le texte doit rester visible.
.gradient-text {
color: #6d28d9; /* solid fallback from the gradient */
}
@supports (background-clip: text) or (-webkit-background-clip: text) {
.gradient-text {
background-image: linear-gradient(90deg, #6d28d9, #be185d);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
}
@media (forced-colors: active) {
.gradient-text {
background: none;
color: CanvasText;
}
}La page MDN sur background-clip documente la valeur text et sa prise en charge actuelle.
Contraste : vérifiez les deux extrémités du dégradé
Un vérificateur de contraste prend une seule couleur de texte, mais un texte dégradé en a beaucoup. Les mots ne sont lisibles que comme leur partie la plus faible : vérifiez donc l’arrêt le plus clair et le plus sombre contre l’arrière-plan, et regardez aussi le milieu, car un mélange sRGB peut passer plus clair ou plus terne que l’une ou l’autre extrémité. Pour un grand texte d’affichage, les WCAG demandent au moins 3:1 ; pour un texte normal, 4,5:1. Le contraste des couleurs explique les rapports.
Corriger le texte dégradé multi-lignes et les lettres coupées
Sur un élément en ligne qui passe à la ligne, le navigateur étale un seul arrière-plan sur toutes les lignes comme s’il s’agissait d’une seule bande : la première ligne reçoit le début du dégradé et la dernière la fin. En général, vous voulez que chaque ligne porte le dégradé complet. box-decoration-break: clone le fait. Sur les éléments de bloc, comme un titre, le dégradé couvre déjà toute la boîte : un long dégradé sur un titre large peut donc n’en montrer que le milieu sur les lignes courtes.
.gradient-text {
-webkit-box-decoration-break: clone;
box-decoration-break: clone;
/* stop descenders being cut off */
line-height: 1.15;
padding-block-end: 0.08em;
}Les jambages coupés sont l’autre surprise. L’arrière-plan ne peint que la boîte de l’élément : avec un line-height très serré, les parties des lettres qui dépassent en dessous restent transparentes et disparaissent. Un interligne d’environ 1,1 ou un peu de remplissage en bas règle le problème. Les polices d’affichage en italique peuvent perdre la pointe de leur dernière lettre à droite pour la même raison ; un peu de remplissage en ligne aide.
Quand le texte dégradé marche, et quand il ne marche pas
À éviter
- Le texte courant, où le changement de couleur ralentit la lecture
- Les liens et les boutons, où la couleur signale l’état
- Les petits libellés de moins de 24px, où le dégradé est de toute façon invisible
- Les dégradés arc-en-ciel de cinq teintes ou plus
- Du texte dégradé sur un fond dégradé
À utiliser pour
- Un mot ou une courte expression dans un grand titre
- Un nom de produit ou de marque dans un hero
- De grands chiffres dans un bloc de statistiques
- Deux ou trois teintes voisines de luminosité proche
- Des arrière-plans simples et calmes qui laissent les lettres mener
Une bonne règle : le texte dégradé est un accent, comme l’italique. Un mot mis en valeur dans un titre attire l’œil ; un paragraphe entier le fatigue. Les graisses fortes aident, car les traits fins ne montrent pas assez de couleur pour se lire comme un dégradé. Si le reste de la page utilise déjà des arrière-plans dégradés, une typo unie est souvent le meilleur choix ; le texte sur des arrière-plans dégradés traite ce cas.
Animer le texte dégradé
Pour faire couler la couleur dans les lettres, rendez l’arrière-plan plus grand que le texte et déplacez-le. Dimensionnez-le à 200 % de large et animez background-position dans les deux sens avec alternate, pour qu’il n’y ait jamais de saut au redémarrage de la boucle. Respectez les réglages de mouvement réduit et restez lent : un scintillement toutes les quelques secondes fait soigné, un cycle rapide fait alerte.
.gradient-text--flow {
background-image: linear-gradient(90deg, #6d28d9, #be185d, #c2410c);
background-size: 200% 100%;
animation: flow 6s ease-in-out infinite alternate;
}
@keyframes flow {
from { background-position: 0% 50%; }
to { background-position: 100% 50%; }
}
@media (prefers-reduced-motion: reduce) {
.gradient-text--flow { animation: none; }
}Les mêmes astuces d’arrière-plan alimentent plus largement les dégradés animés en CSS, et les contours dégradés plutôt que les remplissages sont traités dans les bordures dégradées CSS.
Les questions qu’on nous pose
Comment faire du texte dégradé en CSS ?
Définissez un dégradé en background-image, ajoutez -webkit-background-clip: text et background-clip: text, et réglez color: transparent. Mettez une couleur unie en repli hors d’un contrôle @supports.
Pourquoi mon texte dégradé est-il invisible ?
Le texte est transparent mais l’arrière-plan n’est pas découpé, en général parce que la déclaration de découpage manque, est mal écrite ou n’est pas prise en charge. N’appliquez color: transparent que dans @supports (background-clip: text).
Le texte dégradé est-il accessible ?
Il peut l’être si chaque partie du dégradé a assez de contraste avec l’arrière-plan et que le texte reste du vrai texte. Vérifiez l’arrêt le plus clair et le plus sombre, et réinitialisez les couleurs en mode couleurs forcées.
Pourquoi le bas de mes lettres est-il coupé ?
L’arrière-plan découpé ne couvre que la boîte de l’élément : un interligne serré laisse donc les jambages en dehors. Portez l’interligne à environ 1,1 ou ajoutez un peu de remplissage en bas.
Puis-je utiliser du texte dégradé dans des e-mails ?
La prise en charge de background-clip: text est inégale selon les clients de messagerie : utilisez une couleur unie ou une image avec texte alternatif. Voyez les dégradés dans les e-mails.
Écrit par Gradiently
L’équipe derrière Gradiently, un outil de création construit autour des Marks : des dégradés vivants qui donnent à tout ce que vous créez votre propre signature.
Voir notre profil


