Usage minimal du SVG
Le langage SVG (= Scalable Vector Graphics) permet de décrire des objets graphiques vectoriels, c’est à dire qu’ils peuvent être affichés à n’importe quelle taille sans perte de qualité. C’est un des formats de sortie d’applications comme Illustrator, Inkscape, draw.io.
SVG ne fait pas partie au sens strict de la spécification HTML, mais il peut être inclus directement dans des documents HTML5. La hiérarchie des éléments du dessin SVG est intégrée au DOM de la page et les différents noeuds sont accessibles avec des sélecteurs comme les autres noeuds du DOM.
- c’est un élement ‘inline’
- il peut être stylé avec du CSS, avec les mêmes règles d’héritage, de sélecteurs, de cascades
- il peut être animé
- il peut être clippé
- on peut attacher des écouteurs d’événements à
<svg>
ou à ses sous-éléments
En un mot, tout se passe comme si les balises <svg>
, <path>
, etc. faisaient partie des éléments HTML.
SVG est basé sur XML, ce qui implique que :
- toutes les balises doivent être fermées, même celles sans contenu
- les noms d’attributs sont case-sensitive (attention à ‘viewBox’)
Exemple
- la plupart des attributs SVG (stroke, stroke-width, fill, etc.) peuvent également être utilisés comme attributs CSS
Dimensions
- taille par défaut 300px x 150px pour les SVG inclus dans des documents HTML (idem pour
<img>
,<object>
et<iframe>
) - attributs
width
etheight
: dimensions externes pour le navigateur, en unités CSS. N’en préciser qu’un seul préserve l’aspect-ratio viewBox="x y w h"
: système de coordonnées interne du dessin, sans unité
Pour modifier la taille externe d’un SVG, utiliser les attributs width et height, sans modifier l’attribut viewBox
.
Groupes et transformations
Utilisation des bibliothèques de symboles
Les icones de bibliothèque sont généralement sous forme de SVG. Par exemple avec material design icons :
Un élément SVG est de type inline
Le SVG peut être animé
https://codepen.io/jjperezaguinaga/pen/DZxRmb