Guide des dégradés SVG – exemples linéaires et radiaux

Les dégradés SVG créent des transitions de couleur douces pour remplir ou tracer formes, texte et paths. Ce tutoriel explique comment <linearGradient>, <radialGradient>, <stop>, fill="url(#id)" et stroke="url(#id)" fonctionnent ensemble.

Réponse rapide : définissez un dégradé dans <defs>, donnez-lui un id, ajoutez des éléments <stop> avec offset et stop-color, puis référencez-le depuis une forme ou un texte avec fill="url(#id)" ou stroke="url(#id)".

1<svg width="220" height="120" xmlns="http://www.w3.org/2000/svg">
2  <defs>
3    <linearGradient id="brand-gradient" x1="0%" y1="0%" x2="100%" y2="0%">
4      <stop offset="0%" stop-color="steelblue" />
5      <stop offset="100%" stop-color="gold" />
6    </linearGradient>
7  </defs>
8  <rect x="20" y="20" width="180" height="80" fill="url(#brand-gradient)" />
9</svg>

Dans cet article, vous apprendrez à créer des définitions réutilisables dans <defs>, appliquer des dégradés à fill et stroke, contrôler direction, point focal et stops, et éviter les erreurs avec id, url(#id), offset et gradientUnits.

Dégradés SVG

Un dégradé est une transition progressive entre couleurs. SVG prend en charge <linearGradient> et <radialGradient>. Ces éléments sont des paint servers : ils sont définis une fois, puis référencés par les éléments visibles.

Comment créer des dégradés SVG

  1. Ajoutez un bloc <defs> pour les définitions réutilisables.
  2. Choisissez <linearGradient> pour une transition droite ou <radialGradient> pour une transition depuis un centre.
  3. Définissez un id unique.
  4. Ajoutez des <stop> avec des offset croissants et des stop-color.
  5. Appliquez le dégradé avec fill="url(#id)" ou stroke="url(#id)".
  6. Ajustez x1, y1, x2, y2, cx, cy, r, fx, fy ou gradientUnits si le rendu n’est pas celui attendu.

Dégradé linéaire SVG

Un dégradé linéaire change de couleur le long d’un vecteur défini par x1, y1, x2 et y2. Avec gradientUnits="objectBoundingBox", les valeurs sont souvent des pourcentages; avec userSpaceOnUse, elles utilisent le système de coordonnées SVG courant.

 1<svg height="250" width="700" xmlns="http://www.w3.org/2000/svg">
 2	<defs>
 3		<linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">
 4			<stop offset="10%" style="stop-color:LIGHTSALMON" />
 5			<stop offset="50%" style="stop-color:TEAL" />
 6			<stop offset="90%" style="stop-color:LIGHTPINK" />
 7		</linearGradient>
 8	</defs>
 9    <ellipse cx="300" cy="170" rx="165" ry="55" fill="url(#grad1)" />
10    <text x="10" y="85" font-family="Arial" stroke="grey" stroke-width="1" font-size="90" fill="url(#grad1)" >Linear Gradient</text>
11</svg>

Dégradé linéaire appliqué à un texte SVG et à une ellipse

Le texte et l’ellipse partagent fill="url(#grad1)", donc la même définition de dégradé.

Dégradé radial SVG

Un dégradé radial se propage depuis un centre ou un point focal. cx, cy et r définissent le cercle final; fx et fy définissent le point focal.

 1<svg height="300" width="600" xmlns="http://www.w3.org/2000/svg">
 2    <defs>
 3        <radialGradient id="myRG" cx="0.5" cy="0.5" r="0.9" fx="0.5" fy="0.5" spreadMethod="pad">
 4            <stop offset="0%" stop-color="BISQUE" />
 5            <stop offset="60%" stop-color="CADETBLUE" />
 6        </radialGradient>
 7    </defs>
 8    <ellipse cx="300" cy="170" rx="165" ry="55" fill="url(#myRG)" />
 9    <text x="10" y="85" font-family="Arial" stroke="grey" stroke-width="1" font-size="85" fill="url(#myRG)" >Radial Gradient</text>
10</svg>

Dégradé radial appliqué à un texte SVG et à une ellipse

Déplacer fx et fy, par exemple vers 25%, décale la zone lumineuse vers un côté de la forme.

Dégradé radial avec point focal décalé appliqué à un texte SVG et à une ellipse

Erreurs courantes et corrections

ProblèmeCauseCorrection
Le dégradé n’est pas visibleid absent, référence incorrecte ou élément cible sans fill / strokeDonnez un id unique et référencez url(#id)
Le dégradé ne s’applique pasRéférence fill ou stroke incorrecteVérifiez que l’id correspond exactement
Direction inattendueMauvais x1, y1, x2, y2Ajustez le vecteur de dégradé
Le radial ne couvre pas la zone attenduer, centre, point focal ou gradientUnits inadaptésAjustez r, cx, cy, fx, fy ou utilisez userSpaceOnUse
Les stops se mélangent maloffset manquants ou dans le mauvais ordreVérifiez l’ordre de 0% à 100%

FAQ – dégradés SVG

Comment appliquer un dégradé SVG à une forme ?

Définissez le dégradé dans <defs>, donnez-lui un id, puis mettez fill ou stroke à url(#id) sur l’élément cible.

Quelle est la différence entre linearGradient et radialGradient ?

<linearGradient> crée une transition le long d’une ligne. <radialGradient> diffuse la couleur depuis un centre ou un point focal.

Peut-on utiliser un dégradé pour stroke ?

Oui. Définissez le dégradé dans <defs> et utilisez stroke="url(#id)" avec un stroke-width suffisant.

Puis-je modifier des couleurs de dégradé par programme ?

Oui. En Python via .NET, chargez le SVG et modifiez les attributs stop-color des éléments <stop>. Consultez Changer les couleurs SVG en Python.

Ressources associées