Dégradé CSS en CSS : linear-gradient(), radial-gradient() et le piège du SVG

linear-gradient() et radial-gradient() sont des valeurs de background-image, à ne pas confondre avec les balises SVG du même nom.
4 min de lecture
Believemy logo

Chercher comment faire un dégradé en CSS mène parfois vers une documentation qui parle d'un <linearGradient> entre balises <defs>. Ce n'est pas une erreur de recherche : c'est un tout autre mécanisme, propre au SVG, qui n'a presque rien en commun avec le dégradé CSS malgré un nom quasi identique.

Le dégradé abordé ici est une fonction CSS, pas une balise. Il se déclare en une ligne et fonctionne sur n'importe quel élément HTML.


Définition

linear-gradient() et radial-gradient() sont des fonctions qui produisent une image générée par le navigateur, sans aucun fichier à charger. Elles s'utilisent comme valeur de background-image, exactement au même endroit qu'un url() : il n'existe pas de propriété dédiée aux dégradés, ce sont des valeurs comme les autres. Une troisième fonction, conic-gradient(), fait tourner les couleurs autour d'un point plutôt que de les faire progresser en ligne ou en cercle, ce qui la rend utile pour des indicateurs de progression circulaires.

CSS
.bandeau {
  background-image: linear-gradient(90deg, #6366f1, #ec4899);
}

.bulle {
  background-image: radial-gradient(circle, #fde68a, #f59e0b);
}


Les points d'arrêt de couleur

Un dégradé accepte autant de couleurs que nécessaire, chacune pouvant recevoir une position explicite en pourcentage. Sans position, les couleurs se répartissent uniformément. En répétant deux fois la même position pour deux couleurs différentes, la transition disparaît et laisse place à une bande nette, technique utilisée pour simuler des rayures ou des zones découpées sans transition.

CSS
.trois-couleurs {
  background-image: linear-gradient(
    90deg,
    #6366f1 0%,
    #a855f7 50%,
    #ec4899 100%
  );
}

.rayures {
  background-image: linear-gradient(
    45deg,
    #f1f5f9 25%,
    #e2e8f0 25%,
    #e2e8f0 50%,
    #f1f5f9 50%
  );
  background-size: 20px 20px;
}


L'angle et la direction

linear-gradient() accepte un angle en degrés, 0deg pointant vers le haut et augmentant dans le sens horaire, ou un mot-clé comme to right, to bottom left. Sans angle précisé, la valeur par défaut est to bottom. radial-gradient() accepte de son côté une forme (circle ou ellipse) et une position de départ, par défaut centrée sur l'élément.


Le piège du nom : ce n'est pas le <linearGradient> du SVG

Le SVG possède ses propres éléments <linearGradient> et <radialGradient>, déclarés dans un bloc <defs> puis référencés ailleurs avec fill="url(#monDegrade)". C'est une syntaxe XML complète, pensée pour des formes vectorielles précises, et elle n'a aucun lien de parenté technique avec les fonctions CSS malgré la ressemblance des noms. Le dégradé CSS, lui, ne demande ni définition séparée ni référence : il se déclare directement dans la propriété qui l'utilise.

Bon à savoirSi une recherche en ligne renvoie du code avec des balises <defs> et <stop>, c'est du SVG, pas du CSS. Pour un fond de section HTML classique, ignorez ces résultats et cherchez plutôt linear-gradient ou radial-gradient.


Combiner un dégradé avec une couleur de repli

Sur un navigateur ancien ou lors d'un chargement très rapide, prévoir une Couleur CSS unie en repli reste une bonne pratique, déclarée avant le dégradé dans le Raccourci background : le navigateur applique la dernière valeur qu'il comprend, ce qui garantit un fond correct même si la syntaxe du dégradé échoue pour une raison quelconque. Cette précaution coûte une seule ligne et évite qu'un visiteur ne se retrouve, ne serait-ce qu'une fraction de seconde, face à un fond totalement blanc.


Questions fréquentes

QuestionUn dégradé peut-il être partiellement transparent ?

Oui, en donnant à une ou plusieurs couleurs une valeur avec canal alpha, comme rgba(0, 0, 0, 0) pour un point totalement transparent. C'est la technique utilisée pour assombrir progressivement le bas d'une image sans jamais cacher totalement ce qu'il y a en dessous.

QuestionPourquoi mon radial-gradient ne part-il pas du centre de l'élément ?

Parce qu'une position de départ a probablement été précisée, par exemple radial-gradient(circle at top left, ...). Sans mot-clé de position, le dégradé radial est toujours centré par défaut sur l'élément qui le porte.

QuestionPeut-on appliquer un dégradé directement au texte plutôt qu'à un fond ?

Oui, avec une combinaison un peu détournée : déclarer le dégradé en background-image sur le texte, ajouter background-clip: text pour que le fond épouse exactement la forme des lettres, puis passer color à transparent pour laisser le dégradé transparaître à travers le texte.

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.