HTML - SVG

-

Introduction aux SVG

SVG (Scalable Vector Graphics) est un format basé sur XML pour créer des graphiques vectoriels sur le web. Contrairement aux images matricielles (JPEG ou PNG) composées de pixels, les graphiques SVG sont définis à l'aide d'instructions mathématiques, leur permettant d'être redimensionnés à n'importe quelle taille sans perte de qualité.

Un des principaux avantages de l'utilisation des SVG est leur capacité à créer des graphiques nets qui s'affichent bien sur n'importe quelle taille d'écran. Que vous visualisiez une image SVG sur un petit appareil mobile ou un grand écran de bureau, les graphiques resteront nets. Cela rend les SVG appropriés pour créer des logos, des icônes, des graphiques et d'autres éléments visuels qui doivent être souvent redimensionnés.

Un autre avantage des SVG est leur petite taille de fichier par rapport aux images matricielles. Comme les graphiques SVG sont définis en utilisant du code plutôt que des pixels, ils peuvent être compressés et optimisés pour réduire leur taille de fichier sans sacrifier la qualité de l'image. Cela signifie des temps de chargement de page plus rapides et de meilleures performances, surtout sur les appareils mobiles ou les connexions internet plus lentes.

En comparant les SVG aux images matricielles, considérez le type de graphique que vous créez. Les images matricielles sont meilleures pour les photographies avec de nombreuses couleurs et détails. Les SVG excellent dans la création de formes géométriques simples, d'icônes et d'illustrations avec des couleurs unies ou des dégradés. Les graphiques SVG peuvent également être animés et rendus interactifs en utilisant JavaScript, ouvrant des possibilités pour du contenu web captivant.

Conseil: Exemple de code HTML avec des espaces supplémentaires

<p>Ceci    est   un   paragraphe   avec    des   espaces   supplémentaires.</p>

Lorsqu'un navigateur affiche ce code, il montrera le texte comme suit :

Ceci est un paragraphe avec des espaces supplémentaires.

Conseil: Exemple de balises mal appariées

<p>Ceci est un paragraphe.</div>

Dans ce cas, la balise ouvrante <p> est fermée avec une balise </div>, ce qui est incorrect. La bonne façon de fermer le paragraphe est :

<p>Ceci est un paragraphe.</p>

Syntaxe de base SVG

Pour commencer à utiliser SVG, vous devez comprendre sa syntaxe de base et sa structure de document. Le code SVG est écrit au format XML, ce qui signifie qu'il suit un ensemble de règles pour définir les éléments et les attributs.

La première chose à inclure dans un document SVG est la déclaration XML et l'espace de noms SVG. L'espace de noms indique au navigateur que le code est écrit au format SVG.

Conseil: Débuter un document SVG

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg">
  <!-- Le contenu SVG va ici -->
</svg>

L'élément <svg> est l'élément racine d'un document SVG. Tous les autres éléments SVG sont placés à l'intérieur. L'attribut xmlns spécifie l'espace de noms SVG, qui est toujours "http://www.w3.org/2000/svg".

Deux attributs de l'élément <svg> sont width et height. Ils définissent la taille du viewport SVG, qui est la zone visible de l'image SVG. Vous pouvez spécifier la largeur et la hauteur en pixels ou dans d'autres unités :

Conseil: Définir la largeur et la hauteur pour SVG

<svg xmlns="http://www.w3.org/2000/svg" width="500" height="300">
  <!-- Le contenu SVG va ici -->
</svg>

Un autre attribut à connaître est viewBox. Il définit le système de coordonnées et le rapport d'aspect de l'image SVG. L'attribut viewBox prend quatre valeurs : x, y, width, et height. Les valeurs x et y spécifient le coin supérieur gauche du viewBox, tandis que width et height définissent sa taille :

Conseil: Définir le viewBox pour SVG

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <!-- Le contenu SVG va ici -->
</svg>

Le viewBox commence aux coordonnées (0, 0) et a une largeur et une hauteur de 100 unités chacune. L'image SVG sera mise à l'échelle pour s'adapter au viewport tout en conservant son rapport d'aspect.

SVG utilise un système de coordonnées où le coin supérieur gauche est (0, 0), et les valeurs augmentent vers la droite et vers le bas. Vous pouvez spécifier les coordonnées et les longueurs dans diverses unités, telles que les pixels (px), em, rem, ou pourcentages. Cependant, les unités les plus courantes en SVG sont les unités utilisateur, qui sont définies par l'attribut viewBox.

Dessiner des formes de base

SVG propose plusieurs formes de base que vous pouvez utiliser pour créer des graphiques. Ces formes comprennent des rectangles, des cercles, des ellipses, des lignes, des polygones, des polylignes et des tracés.

Pour dessiner un rectangle, utilisez l'élément <rect>. Vous pouvez spécifier la position et la taille du rectangle en utilisant les attributs x, y, width et height. Les attributs x et y définissent les coordonnées du coin supérieur gauche, tandis que width et height déterminent les dimensions du rectangle :

Conseil: Dessiner un rectangle

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <rect x="10" y="10" width="50" height="30" />
</svg>

Pour créer un cercle, utilisez l'élément <circle>. Spécifiez la position du centre en utilisant les attributs cx et cy, et définissez le rayon avec l'attribut r :

Conseil: Créer un cercle

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="25" />
</svg>

Pour une ellipse, utilisez l'élément <ellipse>. De manière similaire à un cercle, définissez la position du centre avec cx et cy, mais au lieu d'un seul rayon, utilisez les attributs rx et ry pour définir les rayons horizontal et vertical :

Conseil: Créer une ellipse

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <ellipse cx="50" cy="50" rx="30" ry="20" />
</svg>

Pour dessiner une ligne, utilisez l'élément <line>. Spécifiez le point de départ avec les attributs x1 et y1 et le point d'arrivée avec x2 et y2 :

Conseil: Dessiner une ligne

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <line x1="10" y1="10" x2="90" y2="90" />
</svg>

Pour créer des formes complexes avec des lignes droites, utilisez les éléments <polygon> ou <polyline>. Les deux prennent un attribut points qui définit les sommets de la forme. La différence est qu'un polygone ferme automatiquement la forme, tandis qu'une polyligne la laisse ouverte :

Conseil: Créer un polygone et une polyligne

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <polygon points="50,10 90,90 10,90" />
  <polyline points="10,50 50,10 90,50" />
</svg>

Lorsque vous devez créer des courbes et des formes complexes, utilisez l'élément <path>. Il prend un attribut d qui définit le tracé en utilisant une série de commandes et de coordonnées. Parmi les commandes courantes, on trouve M (déplacer vers), L (ligne vers), H (ligne horizontale), V (ligne verticale), C (courbe de Bézier cubique) et Z (fermer le tracé) :

Conseil: Créer un tracé complexe

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <path d="M10,50 C10,10 90,10 90,50 C90,90 10,90 10,50 Z" />
</svg>

Ces formes de base vous donnent les éléments nécessaires pour créer une variété de graphiques avec SVG. Vous pouvez les combiner, les styliser et les transformer pour obtenir l'aspect souhaité pour vos projets.

Styliser les éléments SVG

Le SVG offre des moyens de styliser et de modifier l'apparence des éléments. Vous pouvez utiliser des attributs comme fill et stroke pour définir les couleurs, l'opacité pour la transparence, les dégradés et les motifs pour la texture, et même le CSS pour un style plus avancé.

Pour définir la couleur de remplissage d'un élément SVG, utilisez l'attribut fill. Cet attribut accepte des mots-clés de couleur, des valeurs hexadécimales, RGB ou HSL :

Conseil: Définir la couleur de remplissage d'un élément SVG

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <rect x="10" y="10" width="50" height="30" fill="blue" />
  <circle cx="50" cy="50" r="25" fill="#ff0000" />
</svg>

Le contour est le tracé extérieur d'une forme SVG. Définissez la couleur du contour en utilisant l'attribut stroke et contrôlez sa largeur avec stroke-width :

Conseil: Définir la couleur et la largeur du contour d'une forme SVG

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <rect x="10" y="10" width="50" height="30" fill="none" stroke="blue" stroke-width="2" />
  <circle cx="50" cy="50" r="25" fill="none" stroke="#ff0000" stroke-width="4" />
</svg>

Pour rendre un élément transparent, utilisez l'attribut opacity. Il accepte des valeurs entre 0 (totalement transparent) et 1 (totalement opaque) :

Conseil: Définir l'opacité d'un élément SVG

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <rect x="10" y="10" width="50" height="30" fill="blue" opacity="0.5" />
  <circle cx="50" cy="50" r="25" fill="#ff0000" opacity="0.7" />
</svg>

Vous pouvez également définir séparément l'opacité du remplissage ou du contour en utilisant fill-opacity et stroke-opacity.

Le SVG prend en charge les dégradés linéaires et radiaux pour créer des transitions de couleur fluides. Définissez le dégradé en utilisant l'élément <linearGradient> ou <radialGradient> et référencez-le dans l'attribut fill ou stroke en utilisant une URL :

Conseil: Utiliser des dégradés linéaires en SVG

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <defs>
    <linearGradient id="myGradient">
      <stop offset="0%" stop-color="blue" />
      <stop offset="100%" stop-color="red" />
    </linearGradient>
  </defs>
  <rect x="10" y="10" width="50" height="30" fill="url(#myGradient)" />
</svg>

Les motifs vous permettent de remplir des formes avec des images répétitives ou d'autres éléments SVG. Définissez le motif en utilisant l'élément <pattern> et référencez-le dans l'attribut fill ou stroke :

Conseil: Utiliser des motifs en SVG

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <defs>
    <pattern id="myPattern" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse">
      <circle cx="10" cy="10" r="5" fill="blue" />
    </pattern>
  </defs>
  <rect x="10" y="10" width="50" height="30" fill="url(#myPattern)" />
</svg>

En plus des attributs, vous pouvez styliser les éléments SVG en utilisant le CSS. Appliquez des règles CSS aux éléments SVG en utilisant des styles en ligne, des feuilles de style internes ou des feuilles de style externes :

Conseil: Styliser les éléments SVG en utilisant le CSS

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <style>
    .myStyle {
      fill: blue;
      stroke: red;
      stroke-width: 2;
    }
  </style>
  <rect x="10" y="10" width="50" height="30" class="myStyle" />
</svg>

L'utilisation du CSS permet un style plus flexible et réutilisable, car vous pouvez cibler les éléments en fonction de leurs noms de balises, de leurs classes ou de leurs identifiants.

En combinant ces techniques de style, vous pouvez créer des graphiques SVG visuellement attrayants et personnalisés qui correspondent au design et aux exigences de votre projet.

Texte dans SVG

L'ajout de texte à vos graphiques SVG est simple grâce à l'élément <text>. Vous pouvez positionner le texte en utilisant les attributs x et y, qui spécifient les coordonnées du point d'ancrage du texte. Par défaut, le point d'ancrage est le bord gauche de la ligne de base du texte :

Conseil: Exemple de texte basique

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 100">
  <text x="20" y="35">Bonjour, SVG !</text>
</svg>

Pour formater et styliser le texte, vous pouvez utiliser divers attributs ou propriétés CSS. Par exemple, vous pouvez changer la famille de police, la taille, le poids et le style en utilisant les attributs font-family, font-size, font-weight, et font-style :

Conseil: Exemple de texte stylisé

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 100">
  <text x="20" y="35" font-family="Arial" font-size="24" font-weight="bold" font-style="italic">
    Bonjour, SVG !
  </text>
</svg>

Vous pouvez également appliquer des couleurs de remplissage et de contour au texte, ajuster le point d'ancrage du texte en utilisant l'attribut text-anchor (avec des valeurs comme start, middle, ou end), et contrôler l'espacement entre les caractères ou les mots en utilisant les attributs letter-spacing et word-spacing.

Si vous devez envelopper du texte ou créer du texte sur plusieurs lignes, vous pouvez utiliser l'élément <tspan> à l'intérieur de l'élément <text>. Chaque <tspan> représente une ligne de texte distincte et peut avoir son propre positionnement et style :

Conseil: Exemple de texte multi-lignes

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 100">
  <text x="20" y="35">
    <tspan>Bonjour,</tspan>
    <tspan x="20" y="60">SVG !</tspan>
  </text>
</svg>

Une autre fonctionnalité intéressante du texte SVG est la possibilité de le placer le long d'un chemin. Pour ce faire, définissez d'abord un chemin en utilisant l'élément <path>. Ensuite, utilisez l'élément <textPath> à l'intérieur de l'élément <text> et référencez le chemin en utilisant l'attribut href :

Conseil: Exemple de texte le long d'un chemin

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 100">
  <path id="monChemin" d="M20,20 C20,50 180,50 180,20" fill="none" stroke="black" />
  <text>
    <textPath href="#monChemin">Texte le long d'un chemin</textPath>
  </text>
</svg>

Le texte suivra la forme du chemin, créant des effets visuels intéressants. Vous pouvez contrôler la position du texte le long du chemin en utilisant l'attribut startOffset, qui accepte une valeur de longueur ou de pourcentage.

L'ajout de texte à vos graphiques SVG ouvre de nombreuses possibilités pour créer des visualisations, des graphiques ou des diagrammes informatifs et attrayants. Avec les différentes options de formatage et de style disponibles, vous pouvez personnaliser le texte pour répondre à vos besoins de conception.

Transformation et animation SVG

Le SVG vous permet de transformer et d'animer des éléments pour créer des graphiques captivants et interactifs. Vous pouvez appliquer des transformations comme la translation, la rotation et la mise à l'échelle aux éléments, les animer en utilisant SMIL (Synchronized Multimedia Integration Language), ou les rendre interactifs avec JavaScript.

Pour transformer un élément SVG, utilisez l'attribut transform. Cet attribut accepte diverses fonctions de transformation :

Fonction Description
translate(x, y) Déplace l'élément horizontalement de x unités et verticalement de y unités.
rotate(angle) Fait pivoter l'élément de l'angle spécifié (en degrés) autour de son origine.
scale(x, y) Redimensionne l'élément horizontalement de x et verticalement de y. Si une seule valeur est fournie, le redimensionnement est uniforme.

Vous pouvez combiner plusieurs transformations en les listant séparées par des espaces dans l'attribut transform :

Conseil: Combinaison de plusieurs transformations

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <rect x="50" y="50" width="100" height="100" fill="blue" transform="translate(25, 25) rotate(45) scale(0.5)" />
</svg>

Le SVG prend également en charge l'animation des éléments en utilisant SMIL. Pour créer une animation, utilisez l'élément <animate> à l'intérieur de l'élément que vous souhaitez animer. Spécifiez l'attribut à animer en utilisant l'attribut attributeName, et définissez les valeurs de début et de fin avec les attributs from et to. Vous pouvez contrôler la durée et le timing de l'animation avec les attributs dur et begin :

Conseil: Animation de la largeur avec SMIL

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <rect x="50" y="50" width="100" height="100" fill="blue">
    <animate attributeName="width" from="100" to="150" dur="2s" begin="0s" repeatCount="indefinite" />
  </rect>
</svg>

Cet exemple anime la largeur du rectangle de 100 à 150 sur une durée de 2 secondes, se répétant indéfiniment.

Vous pouvez animer divers attributs comme x, y, width, height, fill, opacity, et bien d'autres. SMIL fournit également d'autres éléments d'animation comme <animateTransform> pour animer les transformations et <animateMotion> pour animer un élément le long d'un chemin.

Pour rendre les éléments SVG interactifs, vous pouvez utiliser JavaScript pour écouter les événements et manipuler les éléments. Les éléments SVG prennent en charge des événements courants comme click, mouseover, mouseout, et bien d'autres. Vous pouvez attacher des écouteurs d'événements aux éléments en utilisant JavaScript et modifier leurs attributs ou styles en fonction des interactions de l'utilisateur :

Conseil: SVG interactif utilisant JavaScript

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <rect id="myRect" x="50" y="50" width="100" height="100" fill="blue" />
  <script>
    const rect = document.getElementById('myRect');
    rect.addEventListener('click', function() {
      this.setAttribute('fill', 'red');
    });
  </script>
</svg>

Vous pouvez également utiliser des bibliothèques JavaScript comme D3.js ou Snap.svg pour simplifier le travail avec SVG et créer des animations et interactions complexes.

En utilisant les transformations, les animations et l'interactivité, vous pouvez donner vie à vos graphiques SVG et créer des expériences utilisateur attrayantes. Expérimentez avec ces techniques pour ajouter du mouvement, de la réactivité et de l'intérêt visuel à vos projets basés sur SVG.

Filtres et effets SVG

Le SVG offre un ensemble de filtres et d'effets qui vous permettent d'ajouter des modifications visuelles à vos graphiques. Avec les filtres, vous pouvez créer des effets de flou, d'ombre portée et d'éclairage, tandis que le masquage et le découpage vous aident à contrôler la visibilité des éléments. Le SVG prend également en charge les modes de fusion pour créer des combinaisons visuelles.

Un effet de filtre est le flou gaussien, qui adoucit les bords d'un élément. Pour appliquer un effet de flou, utilisez l'élément <filter> avec une primitive <feGaussianBlur>. Définissez l'attribut stdDeviation pour contrôler l'intensité du flou :

Conseil: Effet de flou gaussien

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <defs>
    <filter id="blurFilter">
      <feGaussianBlur stdDeviation="5" />
    </filter>
  </defs>
  <rect x="50" y="50" width="100" height="100" fill="blue" filter="url(#blurFilter)" />
</svg>

Un autre effet est l'ombre portée, qui ajoute une ombre derrière un élément. Utilisez la primitive de filtre <feDropShadow> pour créer une ombre portée. Spécifiez les attributs dx et dy pour le décalage de l'ombre, stdDeviation pour l'intensité du flou et flood-color pour la couleur de l'ombre :

Conseil: Effet d'ombre portée

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <defs>
    <filter id="dropShadowFilter">
      <feDropShadow dx="4" dy="4" stdDeviation="4" flood-color="black" />
    </filter>
  </defs>
  <rect x="50" y="50" width="100" height="100" fill="blue" filter="url(#dropShadowFilter)" />
</svg>

Le SVG prend également en charge les effets d'éclairage, qui peuvent ajouter de la profondeur et du réalisme à vos graphiques. Utilisez les primitives de filtre <feDiffuseLighting> ou <feSpecularLighting> pour créer des effets d'éclairage. Ces primitives nécessitent une source lumineuse, telle que <fePointLight> ou <feDistantLight>, et un attribut lighting-color pour spécifier la couleur de la lumière :

Conseil: Effets d'éclairage

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <defs>
    <filter id="lightingFilter">
      <feDiffuseLighting in="SourceGraphic" lighting-color="white">
        <fePointLight x="100" y="100" z="50" />
      </feDiffuseLighting>
    </filter>
  </defs>
  <rect x="50" y="50" width="100" height="100" fill="blue" filter="url(#lightingFilter)" />
</svg>

Le masquage et le découpage sont des techniques pour contrôler la visibilité des éléments. Un masque est un canal alpha qui détermine l'opacité d'un élément, tandis qu'un chemin de découpage définit une région en dehors de laquelle les éléments sont coupés. Pour créer un masque, utilisez l'élément <mask> et définissez le contenu du masque à l'aide d'autres éléments SVG. Référencez le masque en utilisant l'attribut mask :

Conseil: Effet de masquage

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <defs>
    <mask id="myMask">
      <rect x="0" y="0" width="200" height="200" fill="white" />
      <circle cx="100" cy="100" r="50" fill="black" />
    </mask>
  </defs>
  <rect x="50" y="50" width="100" height="100" fill="blue" mask="url(#myMask)" />
</svg>

Pour le découpage, utilisez l'élément <clipPath> pour définir la région de découpage et référencez-le en utilisant l'attribut clip-path :

Conseil: Effet de découpage

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <defs>
    <clipPath id="myClip">
      <circle cx="100" cy="100" r="50" />
    </clipPath>
  </defs>
  <rect x="50" y="50" width="100" height="100" fill="blue" clip-path="url(#myClip)" />
</svg>

Le SVG prend en charge les modes de fusion, qui déterminent comment les couleurs des éléments qui se chevauchent se combinent. Utilisez l'attribut mix-blend-mode pour définir le mode de fusion d'un élément. Certains modes de fusion courants incluent multiply, screen, overlay et darken :

Conseil: Modes de fusion

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <rect x="50" y="50" width="100" height="100" fill="blue" />
  <circle cx="100" cy="100" r="50" fill="red" mix-blend-mode="multiply" />
</svg>

En utilisant les filtres, les effets, le masquage, le découpage et les modes de fusion, vous pouvez ajouter de la richesse visuelle et de la profondeur à vos graphiques SVG. Expérimentez avec ces techniques pour créer des designs qui captent l'attention de votre public.

Intégration de SVG dans HTML

Vous pouvez intégrer des graphiques SVG dans vos documents HTML de plusieurs façons, chacune ayant ses propres avantages et cas d'utilisation. Les trois méthodes principales sont l'utilisation de la balise <img>, le SVG en ligne et le SVG comme image de fond.

Une des façons les plus simples d'intégrer une image SVG est d'utiliser la balise <img>. Vous pouvez référencer un fichier SVG externe dans l'attribut src, comme vous le feriez avec d'autres formats d'image tels que JPEG ou PNG :

Conseil: Utilisation de la balise <img>

<img src="image.svg" alt="Image SVG" width="200" height="200">

L'utilisation de la balise <img> est appropriée lorsque vous souhaitez garder votre code SVG séparé de votre HTML et traiter le SVG comme un fichier image ordinaire. Cependant, cette méthode ne vous permet pas de styliser ou de scripter le SVG à partir de votre HTML.

Si vous voulez plus de contrôle sur votre SVG et la possibilité de le styliser et de le scripter, vous pouvez utiliser le SVG en ligne. Cela signifie placer le code SVG directement dans votre document HTML :

Conseil: Utilisation du SVG en ligne

<body>
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
    <rect x="50" y="50" width="100" height="100" fill="blue" />
    <circle cx="100" cy="100" r="50" fill="red" />
  </svg>
</body>

Le SVG en ligne vous permet d'utiliser CSS pour styliser les éléments SVG et JavaScript pour interagir avec eux, comme vous le feriez avec d'autres éléments HTML. Cette méthode est appropriée lorsque vous voulez créer des graphiques SVG dynamiques et interactifs qui sont étroitement intégrés à votre page web.

Vous pouvez également utiliser le SVG comme image de fond en CSS. Référencez le fichier SVG dans la propriété background-image ou la propriété abrégée background :

Conseil: Utilisation du SVG comme image de fond en CSS

<div class="background"></div>

<style>
.background {
  width: 200px;
  height: 200px;
  background-image: url('image.svg');
  background-size: cover;
}
</style>

L'utilisation du SVG comme image de fond est utile lorsque vous voulez ajouter des graphiques décoratifs à votre page web sans les ajouter à votre balisage HTML. Vous pouvez appliquer des propriétés CSS comme background-size, background-position, et background-repeat pour contrôler l'affichage du fond SVG.

Lors du choix de la méthode à utiliser, pensez à vos besoins spécifiques :

Méthode Cas d'utilisation
Balise <img> Afficher une image SVG sans la styliser ou la scripter
SVG en ligne Créer des graphiques SVG dynamiques et interactifs faisant partie du contenu de votre page
SVG comme image de fond Ajouter des graphiques décoratifs à votre page web sans les ajouter à votre balisage HTML

Accessibilité SVG

Lors de la création de graphiques SVG, il est important de prendre en compte l'accessibilité pour s'assurer que votre contenu peut être compris et navigué par tous les utilisateurs, y compris ceux ayant des handicaps. SVG offre plusieurs fonctionnalités qui peuvent aider à améliorer l'accessibilité, telles que les éléments <title> et <desc>, les rôles et attributs ARIA, et d'autres bonnes pratiques.

L'élément <title> vous permet de fournir un titre bref et descriptif pour un élément SVG. Ce titre n'est pas affiché visuellement mais peut être lu par les lecteurs d'écran pour aider les utilisateurs à comprendre le but de l'élément. Placez l'élément <title> comme premier enfant de l'élément qu'il décrit :

Conseil: Utilisation de l'élément <title>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40">
    <title>Cercle</title>
  </circle>
</svg>

L'élément <desc> vous permet de fournir une description plus détaillée d'un élément SVG. Comme le <title>, la description n'est pas rendue visuellement mais peut être accessible par les lecteurs d'écran et autres technologies d'assistance. Placez l'élément <desc> après l'élément <title> :

Conseil: Utilisation de l'élément

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40">
    <title>Cercle</title>
    <desc>Un cercle bleu avec un rayon de 40 unités, centré à (50, 50)</desc>
  </circle>
</svg>

Les rôles et attributs ARIA (Applications Internet Riches Accessibles) peuvent également être utilisés pour améliorer l'accessibilité des éléments SVG. Les rôles ARIA définissent le but ou le type d'un élément, tandis que les attributs ARIA fournissent des informations supplémentaires sur l'état ou les propriétés de l'élément.

Conseil: Utilisation des rôles et attributs ARIA

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40" role="button" tabindex="0">
    <title>Cliquez-moi</title>
  </circle>
</svg>

Autres bonnes pratiques d'accessibilité pour SVG incluent :

Bonne pratique Description
Fournir un texte alternatif Utilisez les éléments <title> et <desc> ou les attributs aria-label et aria-labelledby pour fournir un texte alternatif aux images SVG.
Assurer un contraste de couleur suffisant Assurez un contraste de couleur suffisant entre les éléments de premier plan et d'arrière-plan pour rendre les graphiques lisibles pour les utilisateurs ayant des déficiences visuelles.
Utiliser des éléments sémantiques Utilisez des éléments sémantiques et des noms d'ID et de classes significatifs pour aider à transmettre la structure et le but du contenu SVG.
Tester avec des technologies d'assistance Testez vos graphiques SVG avec des lecteurs d'écran et d'autres technologies d'assistance pour vous assurer qu'ils sont accessibles et offrent une bonne expérience utilisateur.

Optimisation et performance SVG

Lors de l'utilisation de graphiques SVG sur votre site web, il est important de les optimiser pour la performance afin de s'assurer que vos pages se chargent rapidement. Certaines façons d'améliorer les performances SVG sont de minimiser la taille du fichier, d'utiliser des sprites SVG et de suivre d'autres considérations de performance.

Une manière clé d'optimiser le SVG est de réduire la taille du fichier. Les fichiers SVG peuvent contenir beaucoup de données inutiles, comme des métadonnées, des commentaires et des espaces blancs supplémentaires, qui peuvent augmenter la taille du fichier. Pour minimiser la taille du fichier, vous pouvez :

Technique d'optimisation Description
Supprimer les éléments, attributs et commentaires inutiles Éliminer tous les éléments, attributs ou commentaires qui ne sont pas nécessaires au bon fonctionnement du SVG.
Simplifier les chemins et les formes Réduire le nombre de points et combiner des éléments similaires pour créer des chemins et des formes plus simples.
Utiliser des noms courts et significatifs pour les ID et les classes Choisir des noms concis et descriptifs pour les ID et les classes afin de garder le code SVG propre et gérable.
Compresser le fichier SVG Utiliser GZIP ou une autre méthode de compression pour réduire la taille du fichier SVG.

Il existe également des outils comme SVGO (SVG Optimizer) qui peuvent automatiser le processus d'optimisation des fichiers SVG.

Une autre technique pour améliorer les performances SVG est l'utilisation de sprites SVG. Un sprite est un fichier unique qui contient plusieurs éléments SVG, chacun identifié par un ID unique. Au lieu de charger de nombreux fichiers SVG individuels, vous pouvez charger le sprite une seule fois et afficher différentes parties selon les besoins, ce qui réduit le nombre de requêtes HTTP et accélère le chargement des pages.

Pour créer un sprite SVG, combinez vos fichiers SVG individuels en un seul fichier et donnez à chaque élément SVG un ID unique. Ensuite, référencez le sprite dans votre HTML en utilisant l'élément <use> et l'ID du SVG que vous souhaitez afficher :

Conseil: Exemple d'utilisation d'un sprite SVG

<svg>
  <use xlink:href="sprite.svg#icon-1"></use>
</svg>

Il existe également quelques considérations générales de performance à garder à l'esprit lors de l'utilisation de SVG :

  • N'utilisez SVG que pour les graphiques qui doivent être évolutifs ou interactifs. Pour les images simples, les formats raster comme JPEG ou PNG peuvent être plus appropriés.
  • Soyez attentif au nombre et à la complexité des éléments SVG sur une page. Des graphiques très complexes avec de nombreux éléments peuvent ralentir le rendu.
  • Évitez d'utiliser excessivement les filtres et effets SVG, car ils peuvent être gourmands en performances, en particulier sur les appareils mobiles.
  • Mettez en cache les fichiers SVG pour réduire les temps de chargement pour les visiteurs réguliers.
  • Servez les fichiers SVG avec une compression gzip pour réduire leur taille de transfert.