Animer un SVG avec CSS et SMIL
Ajoutez du mouvement aux éléments SVG avec les transitions CSS et SMIL.
Animer un SVG avec CSS et SMIL est une leçon HTML Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage HTML Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours HTML Academy comprend 4 leçons au total.
Transitions CSS sur SVG
Les attributs de présentation SVG (remplissage, contour, opacité, transformation) peuvent être animés avec des transitions CSS. Ajoutez une classe et définissez la transition : .icon { transition: fill 200ms ease; } .icon:hover { fill: red; }. Les transitions CSS fonctionnent de la même manière sur les éléments SVG.
Animations par images clés CSS sur SVG
Appliquez @keyframes aux éléments SVG : animez le décalage des tirets du contour pour créer un effet de tracé, l’opacité pour une apparition en fondu, et la transformation pour les déplacements et les rotations. La même syntaxe d’animation que celle utilisée pour les éléments HTML s’applique aux éléments SVG sans modification.
@keyframes draw {
from { stroke-dashoffset: 100; }
to { stroke-dashoffset: 0; }
}
.path { stroke-dasharray: 100; animation: draw 1s ease forwards; }Effet de dessin d’un tracé
La technique du motif de tirets du contour et de son décalage simule le dessin d’un tracé : définissez le motif de tirets sur la longueur du tracé, définissez le décalage initial sur cette longueur (le tracé est invisible), puis animez le décalage jusqu’à 0. Le contour semble ainsi se dessiner du début à la fin.
Obtenir la longueur d’un tracé
path.getTotalLength() renvoie la longueur du tracé dans les unités utilisateur SVG. Utilisez cette valeur à la fois pour le motif de tirets du contour et pour son décalage initial. L’animation fonctionnera ainsi correctement, quelle que soit la complexité ou la longueur du tracé.
Transformation CSS sur SVG
Les navigateurs modernes prennent en charge les transformations CSS sur les éléments SVG. Par défaut, l’origine de la transformation se trouve dans le coin supérieur gauche du SVG pour les éléments SVG, et non au centre comme pour HTML. Définissez la boîte de transformation sur la boîte de remplissage pour que l’origine de la transformation soit relative à la boîte englobante de l’élément.
.spinner {
transform-box: fill-box;
transform-origin: center;
animation: rotate 1s linear infinite;
}Animations SMIL
SMIL (Synchronized Multimedia Integration Language) est le système d’animation intégré de SVG. L’élément d’animation modifie les valeurs d’attributs au fil du temps. SMIL ne nécessite ni JavaScript ni CSS : les animations sont entièrement déclaratives dans le balisage SVG.
<circle r="20">
<animate attributeName="r" from="20" to="40" dur="1s" repeatCount="indefinite"/>
</circle>animateTransform
<animateTransform attributeName="transform" type="rotate" from="0 50 50" to="360 50 50" dur="2s" repeatCount="indefinite"> fait pivoter un élément autour d’un centre donné en utilisant la syntaxe SMIL.
animateMotion
<animateMotion> déplace un élément le long d’un tracé SVG. Référencez un tracé avec mpath ou intégrez les données du tracé directement. L’élément suit automatiquement la courbe du tracé, ce qui est utile pour les trajectoires complexes sans calcul manuel des coordonnées.
Compromis entre CSS et SMIL
Animations CSS : prises en charge par tous les navigateurs modernes, intégrées à la cascade CSS et plus faciles à contrôler avec JavaScript (pause, inversion). SMIL : autonome dans le balisage SVG, fonctionne dans les fichiers SVG statiques sans accès à CSS, et offre une syntaxe déclarative et expressive pour les animations suivant un tracé.
Interpolation des tracés SVG
Animez l’interpolation entre deux formes de tracé : les tracés doivent comporter le même nombre de commandes et avoir une structure compatible. L’animation CSS anime la propriété de tracé d (Chrome 88+, Firefox 72+) : @keyframes { to { d: path("M...") } } permet une interpolation native des tracés avec CSS.
Accessibilité des animations SVG
Ajoutez la requête média prefers-reduced-motion pour désactiver ou simplifier les animations SVG destinées aux utilisateurs que les mouvements incommodent. Les animations décoratives doivent être entièrement désactivées ; les animations porteuses de sens, comme les états de chargement, doivent être simplifiées plutôt qu’arrêtées.
Vérification des connaissances
Comment la technique du motif de tirets du contour et de son décalage crée-t-elle une animation de dessin de tracé ?
Résumé
Les animations SVG utilisent les transitions CSS et les images clés pour les effets fondés sur des propriétés, la technique du motif de tirets et de son décalage pour dessiner des tracés, ainsi que les éléments SMIL animate, animateTransform et animateMotion pour les animations déclaratives intégrées au SVG. prefers-reduced-motion contribue à l’accessibilité. CSS et SMIL sont complémentaires : choisissez selon que le SVG doit s’intégrer à la cascade CSS ou rester portable dans un fichier autonome.
Questions Fréquemment Posées
La leçon « Animer un SVG avec CSS et SMIL » est-elle gratuite ?
Oui — le texte complet de « Animer un SVG avec CSS et SMIL » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours HTML Academy, passe à CoddyKit PRO. Le cours HTML Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Animer un SVG avec CSS et SMIL » ?
Ajoutez du mouvement aux éléments SVG avec les transitions CSS et SMIL. Tu pratiques HTML Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer HTML Academy ?
Aucune expérience préalable n'est requise. HTML Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Animer un SVG avec CSS et SMIL » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon HTML Academy ?
Oui. Chaque leçon HTML Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- SVG intégré ou `img` et `object`
- Formes SVG de base : `rect`, `circle`, `path`
- `viewBox` SVG et mise à l’échelle adaptative
- Animer un SVG avec CSS et SMIL