Accueil

Traduction

Dessiner avec SVG - sommaire

Dessiner avec SVG - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

SVG : les dégradés

Plutôt qu'une couleur unie, une forme peut être remplie avec un dégradé linéaire ou radial.
La définition des dégradés SVG peut correspondre à des classes CSS ; voir la fin du chapitre.

Les dégradés radiaux

Exemple : le rendu

Le canevas SVG comprend quatre ronds ; chaque rond rempli avec un dégradé radial.

Le code SVG correspondant

L'élément SVG est un élément HTML ; on peut donc lui appliquer un dégradé CSS.
Par contre les cercles sont des éléments SVG ; il faut leur appliquer des dégradés SVG.

Extrait de la feuille de style de cette page web :

	.degrade_css {background :linear-gradient(to bottom, skyblue ,white);}

Le premier cercle est rempli par un dégradé radial monochrome (olive) : de opaque à transparent.
Le deuxième cercle est rempli par un dégradé radial monochrome (olive) : de transparent à opaque.
Le troisième cercle est rempli par un dégradé radial tricolore : d'un vert foncé vers un vert clair.
Le quatrième cercle est rempli par un dégradé radial tricolore : d'un vert clair vers un vert foncé.

On déclare un dégradé radial grâce au conteneur radialGradient dans lequel on intègre des balises stop.
L'attribut ID est obligatoire afin d'identifier chaque dégradé.
Par défaut l'origine du dégradé est le centre de l'objet auquel s'applique le dégradé.

Il y a autant d'éléments stop que de couleurs ou nuances de couleurs.
l'"attribut offset précise l'étendue de chaque couleur (ou nuance)
Il faut ensuite préciser la couleur avec stop-color et éventuellement l'opacité avec stop-opacity. L'attribut stop-opacity n'name

Dégradés linéaires

Exemple : le rendu

Ci-dessous un canevas SVG contenant 4 rectangles. Chaque rectangle est rempli avec un dégradé linéaire.

Définition des dégradés

Dans le canevas ci-dessus quatre types de dégradés linéaires ayant des axes différents ont été définis.
Ensuite chaque dégradé défini est utilisé pour remplir un rectangle.

Syntaxe

On déclare un dégradé linéaire grâce à l'élément linearGradient dans lequel on inclut des éléments stop.
La balise linearGradiant doit contenir quatre attributs x1 y1 x2 et y2 qui précisent l'axe du dégradé à moins que nous voulions un dégradé horizontal (de gauche vers droite). Dans ce cas ces quatre attributs sont inutiles.
Ici les valeurs de x1,y1,x2 & y2 sont exprimées en pourcentages.
L'attribut ID est obligatoire pour pouvoir appliquer le dégradé à une forme.
Comme tous les objets réutilisables, linearGradient doit évidemment se trouver dans le conteneur defs.

La balise linearGradiant contient autant de balises stop que de tons (couleurs ou niveau de transparence) dans le dégradé.
La balise stop comprend trois attributs : offset, stop-color et/ou stop-opacity.

Application des dégradés aux formes

Retour sur les dégradés radiaux

Je n'ai pas tout dit sur les dégradés radiaux. L'origine du dégradé radial n'est pas forcément le centre de l'objet auquel on l'applique. La portée d'un dégradé radial peut être réduite.

Le rendu

On applique aux ronds successivement les dégradés radiaux "rg1" et "rg2".
On applique aux carrés successivement les dégradés radiaux "rg1" et "rg2".
Ces dégradé n'ont plus pour origine le centre de l'objet.
Le premier dégradé radial a une porté plus faible que le second.

Le code

Dans la définition de chaque dégradé radial j'ai rajouté les attributs cx, cy et r.
Les attributs cx et cy définissent l'origine du dégradé dans l'objet et r l'étendue.
Ces trois paramètres peuvent être exprimés en % (voir premier dégradé) ou en décimal (voir deuxième dégradé). Le pourcentage doit être compris entre 0% et 100% et le décimal entre 0 et 1.

Définir les paramètres du dégradé SVG via CSS

Vous pouvez remplacer les attributs des balises stop (stop-color, offset,...) par l'attribut class.

Le code d'un document SVG :"degrade_via_css.svg"

Les attributs stop-color des balises stop sont définis via les classes CSS stop-debut & stop-fin

Le rendu

La version dynamique

Mais quel est l'intérêt de cette manipulation ?
Si vous rajoutez un script dans le document SVG, vous pouvez créer une animation ; par exemple les couleurs du dégradé changent si survol du rectangle.

Le code de "degrade_via_css_script.svg"

Notez que les éléments stop ont chacun un ID.
Le script : si survol du rectangle SVG et grâce aux classes CSS, la valeur de l'attribut stop-color change !

Le rendu

Attention compte tenu de la présence d'un script, ce document SVG doit être inséré dans la page web via les balises iframe / object sinon le script n'est pas interprété.