Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
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.
Le canevas SVG comprend quatre ronds ; chaque rond rempli avec un dégradé radial.
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
Ci-dessous un canevas SVG contenant 4 rectangles. Chaque rectangle est rempli avec un dégradé linéaire.
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.
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.
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.
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.
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.
Vous pouvez remplacer les attributs des balises stop (stop-color, offset,...) par l'attribut class.
Les attributs stop-color des balises stop sont définis via les classes CSS stop-debut & stop-fin
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.
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 !
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é.