Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site
Dès que vous utilisez des logiciels tels Inkscape ou Boxy SVG vous obtenez du code SVG externe c'est à dire des fichiers
d'extension .svg. Ces fichiers peuvent contenir aussi du CSS mais aussi du JS.
Se pose alors le problème de l'ajout de ces fichiers dans une page Web.
Pour ajouter un document SVG dans une page vous pouvez recourir au HTML ou au CSS.
Jusqu'à présent je vous ai dit que pour ajouter une image SVG dans une page web via le HTML il suffisait d'utiliser la balise IMG
commme pour une image matricielle.
C'est vrai mais à condition qu'il s'agisse de documents SVG simples. Dans d'autres cas il faut mieux utiliser la balise OBJECT.
Ci-dessous trois fichiers SVG ajoutés dans la page web via le HTML dont deux insérés deux fois :
Ce document ne comprend que du code SVG.
Insertion dans la page via la balise IMG :
Affichage correct !
Ce fichier comprend un script JS pour animer le rond.
Insertion dans la page via la balise IMG :
Le rond n'est pas animé !
Insertion du même fichier via la balise OBJECT :
Le rond est animé !
Ce fichier comprend des liens vers des images (des gifs animés) ; animation de ces GIF réalisé avec le SMIL de SVG.
Ajout dans la page via IMG :
Les gifs n'apparaissent pas.
Ajout dans la page cette fois via OBJECT :
Les gifs apparaissent !
Dans la feuille de style externe il n'existe pas de classe spécifique à l'élément object d'où le style en ligne.
Le document rond_auto.svg comprend un script JS (pour animer le cercle). Il faut donc utiliser la balise object
pour l'ajouter dans la page sinon l'animation ne fonctionne pas.
Le document fondeurs.svg comprend des liens vers d'autres images (emploi de la l'instruction image xlink:href ...).
Il faut donc aussi utiliser la balise object pour l'insérer dans la page sinon les images liées n'apparaissent pas.
Un fichier SVG qui comprend une feuille de style CSS peut être ajoutée à une page web via la balise IMG. Donc privilégiez une animation via un keyframes CSS plutôt qu'avec JS.
Un image vectorielle peut être (comme une image matricielle) le "background" d'une boite HTML.
Le code :
La zone SVG pour "background" un document SVG ...
N'oubliez pas la propriété background-size pour que l'image de fond s'adapte aux dimensions de son conteneeur.
Le rendu :
Ajout réussi dans la page web car le fichier "piste.svg" ne comporte que du code SVG.
Il suffirait maintenant de créer un lien vers l'image "avion.png" et d'animer cet objet via le CSS pour créer une animation.
Il faudrait aussi rajouter l'attribut viewBox à l'élément SVG.
Voir l'animation et son code .
Le code :
Le rendu :
Les gifs animés (liens vers d'autres images) n'apparaissent pas ...
Donc la valeur de la propriété background-image doit correspondre à un document SVG simple.
Pour ajouter un document SVG dans une page web privilégiez le HTML au CSS (propriété background-image).
Si le document SVG est dépourvu de script et de liens, vous pourrez utiliser la balise IMG pour l'ajouter dans une page web sinon
utilisez la balise OBJECT.