Balise <stop> SVG : Créer des dégradés de couleurs

Découvrez la balise &lt;stop&gt; en SVG pour définir les points de couleur dans vos dégradés. Syntaxe, attributs et exemples pratiques.
9 min de lecture
Believemy logo

Introduction à la balise <stop> en SVG

Lorsque vous créez des graphiques vectoriels avec SVG, les dégradés de couleurs constituent l'un des outils les plus puissants pour donner vie à vos créations. Au cœur de cette fonctionnalité se trouve la balise <stop>, un élément essentiel mais souvent méconnu qui définit les points de couleur au sein d'un dégradé.

La maîtrise de cet élément vous permettra de créer des effets visuels sophistiqués, des transitions de couleurs fluides et des designs professionnels directement dans votre code HTML. Si vous souhaitez approfondir vos connaissances en développement web et maîtriser les fondamentaux du HTML, notre formation HTML vous guidera pas à pas dans cet apprentissage.

Bon à savoir

💡 La balise <stop> ne fonctionne jamais seule : elle s'utilise toujours à l'intérieur d'un élément ou radialGradient pour définir où et comment les couleurs changent.

 

Définition et syntaxe de base

Qu'est-ce que la balise <stop> ?

La balise <stop> est un élément SVG qui définit un point d'arrêt de couleur (color stop) dans un dégradé. Chaque <stop> spécifie une couleur et sa position le long du dégradé. En combinant plusieurs éléments <stop>, vous créez des transitions de couleurs progressives et fluides.

Voici la syntaxe de base d'un élément <stop> :

HTML
<stop offset="0%" stop-color="#3498db" />

Cette simple ligne définit un point de couleur bleu positionné au début (0%) du dégradé. Mais la puissance de <stop> réside dans sa combinaison avec d'autres éléments.

 

Structure complète avec un dégradé

Pour utiliser <stop>, vous devez l'intégrer dans un contexte de dégradé. Voici un exemple complet :

HTML
<svg width="400" height="200">
  <defs>
    <linearGradient id="believemy-gradient">
      <stop offset="0%" stop-color="#667eea" />
      <stop offset="50%" stop-color="#764ba2" />
      <stop offset="100%" stop-color="#f64f59" />
    </linearGradient>
  </defs>
  <rect width="400" height="200" fill="url(#believemy-gradient)" />
</svg>

Dans cet exemple, nous créons un dégradé à trois couleurs qui passe du violet au rose en passant par le mauve. Chaque balise <stop> définit un point clé de cette transition.

 

Les attributs essentiels de <stop>

L'attribut offset

L'attribut offset définit la position du point de couleur le long du vecteur de dégradé. Il accepte deux types de valeurs :

Type de valeurExempleDescription
Pourcentageoffset="50%"Position relative en pourcentage
Nombre décimaloffset="0.5"Valeur entre 0 et 1

Les deux notations sont équivalentes : offset="50%" et offset="0.5" produisent exactement le même résultat. Nous vous recommandons d'utiliser les pourcentages pour une meilleure lisibilité du code.

HTML
<!-- Ces deux écritures sont identiques -->
<stop offset="25%" stop-color="#e74c3c" />
<stop offset="0.25" stop-color="#e74c3c" />

 

L'attribut stop-color

L'attribut stop-color définit la couleur à ce point du dégradé. Vous pouvez utiliser tous les formats de couleurs CSS :

HTML
<!-- Différentes façons de définir une couleur -->
<stop offset="0%" stop-color="#3498db" />           <!-- Hexadécimal -->
<stop offset="25%" stop-color="rgb(52, 152, 219)" /> <!-- RGB -->
<stop offset="50%" stop-color="rgba(52, 152, 219, 0.8)" /> <!-- RGBA -->
<stop offset="75%" stop-color="hsl(204, 70%, 53%)" /> <!-- HSL -->
<stop offset="100%" stop-color="blue" />              <!-- Nom de couleur -->
Attention

Attention : si vous omettez l'attribut stop-color, la couleur par défaut sera le noir (#000000). Pensez toujours à spécifier explicitement vos couleurs pour éviter les surprises !

 

L'attribut stop-opacity

L'attribut stop-opacity contrôle la transparence de la couleur à ce point du dégradé. Il accepte une valeur entre 0 (totalement transparent) et 1 (totalement opaque).

HTML
<svg width="400" height="150">
  <defs>
    <linearGradient id="fade-gradient">
      <stop offset="0%" stop-color="#9b59b6" stop-opacity="1" />
      <stop offset="100%" stop-color="#9b59b6" stop-opacity="0" />
    </linearGradient>
  </defs>
  <rect width="400" height="150" fill="url(#fade-gradient)" />
</svg>

Ce code crée un effet de fondu où la couleur violette s'estompe progressivement jusqu'à devenir transparente. C'est une technique très utilisée pour les effets de masque et les superpositions.

 

Exemples pratiques avancés

Créer un dégradé arc-en-ciel

Voyons comment créer un dégradé arc-en-ciel complet en utilisant plusieurs balises <stop> :

HTML
<svg width="500" height="100" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <linearGradient id="arc-en-ciel" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" stop-color="#ff0000" />    <!-- Rouge -->
      <stop offset="17%" stop-color="#ff8000" />   <!-- Orange -->
      <stop offset="33%" stop-color="#ffff00" />   <!-- Jaune -->
      <stop offset="50%" stop-color="#00ff00" />   <!-- Vert -->
      <stop offset="67%" stop-color="#0080ff" />   <!-- Bleu clair -->
      <stop offset="83%" stop-color="#0000ff" />   <!-- Bleu -->
      <stop offset="100%" stop-color="#8000ff" />  <!-- Violet -->
    </linearGradient>
  </defs>
  <rect width="500" height="100" fill="url(#arc-en-ciel)" rx="10" />
</svg>

Chaque <stop> représente une couleur du spectre visible, répartie de manière équilibrée le long du dégradé. Notez l'utilisation de rx="10" sur le rectangle pour arrondir les coins.

 

Effet de bouton brillant avec dégradé radial

La balise <stop> fonctionne également avec les dégradés radiaux pour créer des effets de profondeur :

HTML
<svg width="200" height="80" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <radialGradient id="bouton-believemy" cx="50%" cy="30%" r="70%">
      <stop offset="0%" stop-color="#ffffff" stop-opacity="0.4" />
      <stop offset="40%" stop-color="#667eea" />
      <stop offset="100%" stop-color="#4c51bf" />
    </radialGradient>
  </defs>
  <rect x="10" y="10" width="180" height="60" rx="30" 
        fill="url(#bouton-believemy)" />
  <text x="100" y="48" text-anchor="middle" 
        fill="white" font-family="Arial" font-weight="bold">
    S'inscrire
  </text>
</svg>

Ce code génère un bouton avec un effet de lumière réaliste. Le premier <stop> crée un reflet blanc semi-transparent en haut du bouton, tandis que les deux autres définissent le dégradé principal de bleu.

 

Créer une icône avec plusieurs dégradés

Vous pouvez définir plusieurs dégradés dans un même élément et les appliquer à différentes formes :

HTML
<svg width="100" height="100" viewBox="0 0 100 100">
  <defs>
    <!-- Dégradé pour le soleil -->
    <radialGradient id="soleil">
      <stop offset="0%" stop-color="#fff9c4" />
      <stop offset="50%" stop-color="#ffeb3b" />
      <stop offset="100%" stop-color="#ff9800" />
    </radialGradient>
    
    <!-- Dégradé pour le ciel -->
    <linearGradient id="ciel" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" stop-color="#1976d2" />
      <stop offset="100%" stop-color="#81d4fa" />
    </linearGradient>
  </defs>
  
  <!-- Fond du ciel -->
  <rect width="100" height="100" fill="url(#ciel)" />
  
  <!-- Soleil -->
  <circle cx="75" cy="25" r="20" fill="url(#soleil)" />
</svg>

Ce code crée une petite scène avec un ciel dégradé et un soleil lumineux. Chaque élément graphique utilise son propre dégradé défini avec des balises <stop>.

 

Bonnes pratiques et optimisation

Ordre des éléments stop

Les balises <stop> doivent être ordonnées par valeur d'offset croissante. Bien que les navigateurs modernes gèrent généralement un ordre incorrect, nous vous recommandons de toujours respecter l'ordre logique :

HTML
<!-- ✅ Bonne pratique : ordre croissant -->
<linearGradient id="correct">
  <stop offset="0%" stop-color="red" />
  <stop offset="50%" stop-color="yellow" />
  <stop offset="100%" stop-color="green" />
</linearGradient>

<!-- ❌ À éviter : ordre incorrect -->
<linearGradient id="incorrect">
  <stop offset="100%" stop-color="green" />
  <stop offset="0%" stop-color="red" />
  <stop offset="50%" stop-color="yellow" />
</linearGradient>

 

Utiliser les styles CSS pour les couleurs

Pour une meilleure maintenabilité, vous pouvez utiliser des propriétés CSS pour définir les couleurs de vos <stop> :

HTML
<style>
  .stop-debut { stop-color: var(--couleur-primaire, #667eea); }
  .stop-fin { stop-color: var(--couleur-secondaire, #764ba2); }
</style>

<svg width="300" height="100">
  <defs>
    <linearGradient id="theme-gradient">
      <stop offset="0%" class="stop-debut" />
      <stop offset="100%" class="stop-fin" />
    </linearGradient>
  </defs>
  <rect width="300" height="100" fill="url(#theme-gradient)" />
</svg>

Cette approche vous permet de modifier facilement les couleurs de vos dégradés en changeant simplement les variables CSS, ce qui est particulièrement utile pour les thèmes dynamiques.

 

Réutilisation des dégradés

Une fois défini dans l'élément , un dégradé peut être réutilisé autant de fois que nécessaire dans votre SVG :

HTML
<svg width="400" height="200">
  <defs>
    <linearGradient id="gradient-formation">
      <stop offset="0%" stop-color="#11998e" />
      <stop offset="100%" stop-color="#38ef7d" />
    </linearGradient>
  </defs>
  
  <!-- Réutilisation du même dégradé -->
  <circle cx="60" cy="100" r="50" fill="url(#gradient-formation)" />
  <rect x="130" y="50" width="100" height="100" fill="url(#gradient-formation)" />
  <ellipse cx="320" cy="100" rx="60" ry="40" fill="url(#gradient-formation)" />
</svg>

Cette technique réduit la taille de votre code et facilite les modifications globales.

 

Erreurs courantes à éviter

Oublier l'élément parent

La balise <stop> doit toujours être enfant direct d'un élément <linearGradient> ou <radialGradient>. Une erreur fréquente consiste à la placer directement dans le SVG :

HTML
<!-- ❌ INCORRECT : stop sans parent gradient -->
<svg>
  <stop offset="0%" stop-color="blue" />
</svg>

<!-- ✅ CORRECT : stop dans un linearGradient -->
<svg>
  <defs>
    <linearGradient id="mon-degrade">
      <stop offset="0%" stop-color="blue" />
    </linearGradient>
  </defs>
</svg>

 

Un seul élément stop

Un dégradé avec un seul <stop> affichera une couleur unie. Pour créer une véritable transition, vous avez besoin d'au moins deux points de couleur :

HTML
<!-- ❌ Résultat : couleur unie bleue -->
<linearGradient id="incomplet">
  <stop offset="0%" stop-color="blue" />
</linearGradient>

<!-- ✅ Résultat : véritable dégradé -->
<linearGradient id="complet">
  <stop offset="0%" stop-color="blue" />
  <stop offset="100%" stop-color="purple" />
</linearGradient>
Bon à savoir

Un dégradé minimal nécessite deux balises <stop> : une au début (offset 0%) et une à la fin (offset 100%) pour définir les couleurs de départ et d'arrivée.

 

Confondre stop-color et fill

L'attribut fill ne fonctionne pas sur les éléments <stop>. Utilisez toujours stop-color :

HTML
<!-- ❌ INCORRECT : fill ne fonctionne pas sur stop -->
<stop offset="50%" fill="red" />

<!-- ✅ CORRECT : utiliser stop-color -->
<stop offset="50%" stop-color="red" />

 

Compatibilité navigateurs

La balise <stop> bénéficie d'une excellente compatibilité avec tous les navigateurs modernes :

NavigateurVersion minimaleSupport
Chrome1.0✅ Complet
Firefox1.5✅ Complet
Safari3.0✅ Complet
Edge12✅ Complet
Opera9.0✅ Complet
Internet Explorer9✅ Complet

SVG et ses éléments de dégradé sont supportés depuis très longtemps par tous les navigateurs, ce qui en fait une technologie fiable pour vos projets web.

 

Questions fréquentes sur la balise <stop>

Question

Peut-on animer les couleurs d'un élément <stop> ?

Oui, vous pouvez animer les attributs stop-color et stop-opacity en utilisant les éléments d'animation SVG comme <animate> ou avec CSS et JavaScript. Voici un exemple simple :

HTML
<stop offset="50%" stop-color="blue">
  <animate attributeName="stop-color" 
           values="blue;red;blue" 
           dur="3s" 
           repeatCount="indefinite" />
</stop>

 

Question

Combien de balises <stop> peut-on utiliser dans un dégradé ?

Il n'y a pas de limite technique au nombre de balises <stop> que vous pouvez utiliser. Cependant, pour des raisons de performance et de lisibilité, nous vous recommandons de ne pas dépasser 10 à 15 points de couleur. Au-delà, le dégradé devient difficile à maintenir et les gains visuels sont généralement négligeables.

 

Question

Comment créer un dégradé avec des transitions nettes plutôt que progressives ?

Pour créer des transitions nettes (sans fondu), placez deux balises <stop> avec des couleurs différentes au même offset :

HTML
<linearGradient id="rayures">
  <stop offset="0%" stop-color="blue" />
  <stop offset="50%" stop-color="blue" />
  <stop offset="50%" stop-color="red" />  <!-- Même offset, couleur différente -->
  <stop offset="100%" stop-color="red" />
</linearGradient>

 

Question

Comment puis-je apprendre HTML et CSS ?

Pour maîtriser HTML, CSS et les techniques SVG comme les dégradés, nous vous recommandons de suivre notre formation HTML. Cette formation vous accompagnera des bases jusqu'aux concepts avancés, avec des exercices pratiques pour consolider vos acquis.

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.