SVG-Animationen mit CSS und JavaScript: Code-Beispiele für Entwickler (2026)
Praktische Code-Beispiele für SVG-Animationen mit CSS-Keyframes, GSAP, Framer Motion und Vanilla JavaScript. Produktionsreife Snippets für Loader, Übergänge, Hover-Effekte und Scroll-Animationen.

Founder of VectoSolve
Self-taught developer, founder and sole developer of VectoSolve since 2024. He builds the conversion engine and the cutting, embroidery and 3D printing exports.
How this article was made: drafted with AI assistance, then edited and fact-checked before publication. About the author
Warum SVG-Animationen 2026 wichtig sind
SVG-Animationen sind zum Rückgrat moderner Web-Interfaces geworden. Von subtilen Micro-Interactions, die Nutzer durch einen Checkout-Flow leiten, bis hin zu bildschirmfüllenden Hero-Animationen, die eine Markenidentität definieren — animierte SVGs liefern auflösungsunabhängige, leichtgewichtige und zugängliche Bewegung, die kein anderes Format bieten kann.
Im Gegensatz zu rasterbasierten Animationen (GIFs, animierte PNGs oder sogar Video) skalieren SVGs perfekt auf jede Bildschirmgröße, bleiben auf 4K- und Retina-Displays gestochen scharf und können mit demselben CSS und JavaScript manipuliert werden, das Sie bereits kennen. In 2026, wo Core Web Vitals direkt die Suchrankings beeinflussen, ist das Beherrschen von SVG-Animation nicht optional — es ist essentiell.
Dieser Leitfaden führt Sie durch jeden wichtigen Ansatz zur SVG-Animation, von reinem CSS bis zu fortgeschrittenen JavaScript-Bibliotheken, mit produktionsreifen Code-Beispielen bei jedem Schritt.
CSS-Animations-Grundlagen für SVG
CSS ist Ihr erstes und oft bestes Werkzeug für SVG-Animationen. Der Compositor-Thread des Browsers verarbeitet CSS-Animationen auf transform- und opacity-Eigenschaften ohne den Haupt-Thread zu berühren, was Ihnen butterweiche 60fps-Performance kostenlos liefert.
CSS-Transitions: Der einfachste Ansatz
Transitions sind perfekt für zustandsbasierte Animationen — Hover-Effekte, Focus-Zustände und Toggle-Klassen.
/* Sanfte Hover-Skalierung eines SVG-Icons */
.svg-icon {
transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
transform-origin: center;
}
.svg-icon:hover {
transform: scale(1.15);
}
/* Farbtransition auf SVG-Pfad */
.svg-icon path {
transition: fill 0.25s ease-in-out, stroke 0.25s ease-in-out;
fill: #6366f1;
}
.svg-icon:hover path {
fill: #818cf8;
}
Tipp: Setzen Sie transform-origin immer explizit auf SVG-Elemente. Im Gegensatz zu HTML-Elementen, die standardmäßig zentriert sind, verwenden SVG-Elemente standardmäßig den Viewport-Ursprung (0, 0).
CSS-Keyframe-Animationen: Volle kreative Kontrolle
Keyframes ermöglichen mehrstufige Animationen mit präziser Timing-Kontrolle. Ideal für Lade-Spinner, pulsierende Indikatoren, Zeicheneffekte und Loop-Animationen.
/* Pulsierender Benachrichtigungspunkt */
@keyframes pulse {
0% { transform: scale(1); opacity: 1; }
50% { transform: scale(1.4); opacity: 0.6; }
100% { transform: scale(1); opacity: 1; }
}
.notification-dot {
animation: pulse 2s ease-in-out infinite;
transform-origin: center;
}
/* SVG-Zeicheneffekt mit stroke-dasharray */
@keyframes draw-path {
from { stroke-dashoffset: 1000; }
to { stroke-dashoffset: 0; }
}
.draw-line {
stroke-dasharray: 1000;
animation: draw-path 2.5s ease-out forwards;
}
CSS-Transforms: Der Performance-Sweet-Spot
Transforms sind die performantesten CSS-Eigenschaften zum Animieren, da sie vollständig vom GPU-Compositor-Thread verarbeitet werden.
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
@keyframes float-and-rotate {
0% { transform: translateY(0px) rotate(0deg); }
25% { transform: translateY(-10px) rotate(5deg); }
50% { transform: translateY(-18px) rotate(0deg); }
75% { transform: translateY(-10px) rotate(-5deg); }
100% { transform: translateY(0px) rotate(0deg); }
}
.floating-element {
animation: float-and-rotate 4s ease-in-out infinite;
transform-origin: center;
}
Die Compositor-sicheren Eigenschaften: Nur transform und opacity werden garantiert auf dem Compositor-Thread ausgeführt. Das Animieren von fill, stroke, width, height oder d löst Layout-Neuberechnungen aus.
JavaScript-Animations-Ansätze
Wenn CSS an seine Grenzen stößt — dynamische Werte, Scroll-basierte Trigger, Physik-Simulationen oder komplexe Timelines — übernimmt JavaScript.
Die Web Animations API (WAAPI)
Die Web Animations API ist die native Browser-Lösung für JavaScript-gesteuerte Animationen mit voller programmatischer Kontrolle.
const logo = document.querySelector("#svg-logo");
const fadeIn = logo.animate(
[
{ opacity: 0, transform: "translateY(20px) scale(0.95)" },
{ opacity: 1, transform: "translateY(0) scale(1)" }
],
{
duration: 800,
easing: "cubic-bezier(0.22, 1, 0.36, 1)",
fill: "forwards"
}
);
fadeIn.finished.then(() => {
console.log("Logo-Animation abgeschlossen");
animateSubElements();
});
GSAP: Die Industrie-Standard-Bibliothek
GreenSock Animation Platform (GSAP) bleibt die bewährteste Animations-Bibliothek in 2026. Ihre SVG-spezifischen Plugins behandeln Randfälle, die hunderte Zeilen benutzerdefinierten Codes erfordern würden.
import { gsap } from "gsap";
gsap.from("#hero-svg", {
opacity: 0, scale: 0.8, rotation: -5,
duration: 1.2, ease: "back.out(1.7)",
transformOrigin: "center center"
});
const tl = gsap.timeline({ defaults: { ease: "power2.out" } });
tl.from("#bg-circle", { scale: 0, duration: 0.6 })
.from("#icon-paths path", {
strokeDashoffset: 500, duration: 1, stagger: 0.15
}, "-=0.3")
.from("#label-text", { opacity: 0, y: 15, duration: 0.5 }, "-=0.5")
.to("#highlight", { fill: "#6366f1", duration: 0.4 });
SMIL-Animationen: Noch lebendig, aber sparsam verwenden
SMIL-Animationen werden direkt im SVG-Markup mit <animate>, <animateTransform> und <animateMotion> definiert. Chrome hat SMIL 2015 deprecated, dann aber zurückgezogen — es bleibt in allen großen Browsern unterstützt.
<svg viewBox="0 0 100 100">
<circle cx="50" cy="50" r="20" fill="#6366f1">
<animate attributeName="r" values="20;25;20" dur="2s" repeatCount="indefinite" />
<animate attributeName="opacity" values="1;0.6;1" dur="2s" repeatCount="indefinite" />
</circle>
</svg>
Performance-Optimierung im Detail
Die Animations-Performance kann die Nutzererfahrung machen oder brechen. Eine ruckelnde Animation ist schlimmer als gar keine Animation.
Die Compositor-Thread-Regel
/* GUT: Compositor-Thread-Animationen */
.optimized {
transition: transform 0.3s, opacity 0.3s;
}
.optimized:hover {
transform: translateY(-4px) scale(1.02);
opacity: 0.9;
}
/* SCHLECHT: Haupt-Thread-Animationen */
.unoptimized {
transition: top 0.3s, width 0.3s, fill 0.3s;
}
Die will-change Eigenschaft
Nicht übermäßig verwenden. Jede geförderte Ebene verbraucht GPU-Speicher. Selektiv auf Elemente anwenden, die definitiv animiert werden.
SVG-Komplexität reduzieren
- Pfade vereinfachen: Tools wie SVGO oder den integrierten Optimierer von VectoSolve verwenden
- Versteckte Elemente entfernen
- Gruppen abflachen: Unnötige
<g>-Verschachtelung vermeiden - Symbole für wiederholte Formen verwenden:
<use>-Referenzen sind effizienter
Barrierefreiheit: Nutzerpräferenzen respektieren
Nicht jeder möchte oder kann Bewegung auf dem Bildschirm tolerieren. Nutzer mit vestibulären Störungen oder Bewegungsempfindlichkeit haben eine Systemeinstellung, die Sie respektieren müssen.
.animated-element {
animation: slide-in 0.6s ease-out forwards;
}
@media (prefers-reduced-motion: reduce) {
.animated-element {
animation: none;
opacity: 1;
}
}
const prefersReduced = window.matchMedia(
"(prefers-reduced-motion: reduce)"
).matches;
if (prefersReduced) {
element.style.opacity = "1";
} else {
element.animate(
[{ opacity: 0 }, { opacity: 1 }],
{ duration: 600, easing: "ease-out" }
);
}
WCAG 2.2 Erfolgskriterium 2.3.3 empfiehlt, dass durch Interaktion ausgelöste Bewegungsanimationen deaktiviert werden können. Das ist zunehmend eine rechtliche Anforderung.
CSS vs JavaScript vs KI: Den richtigen Ansatz wählen
| Kriterium | CSS-Animationen | JavaScript (WAAPI/GSAP) | KI (VectoSolve) |
|---|---|---|---|
| Setup-Komplexität | Null Abhängigkeiten | Minimal bis moderat | Hochladen und konfigurieren |
| Performance | Exzellent | Exzellent / Sehr gut | Exzellent |
| Dynamische Werte | Eingeschränkt | Volle Kontrolle | KI-bestimmt |
| Pfad-Morphing | Nicht unterstützt | Benötigt Bibliothek | Eingebaut |
| Ideal für | Hover, Loops, Übergänge | Komplexe Interaktionen, Datenvisualisierung | Schnelles Prototyping |
Faustregel: Beginnen Sie mit CSS. Wechseln Sie zu WAAPI, wenn Sie programmatische Kontrolle brauchen. Verwenden Sie GSAP für Timelines und Morphing. Nutzen Sie KI-Tools, wenn Geschwindigkeit gefragt ist.
Framework-Integration: React und Next.js
import { useRef, useEffect } from "react";
function AnimatedIcon({ isActive }) {
const pathRef = useRef(null);
useEffect(() => {
const path = pathRef.current;
if (!path) return;
const prefersReduced = window.matchMedia(
"(prefers-reduced-motion: reduce)"
).matches;
if (prefersReduced) {
path.style.strokeDashoffset = "0";
return;
}
const length = path.getTotalLength();
path.style.strokeDasharray = length;
path.style.strokeDashoffset = length;
const animation = path.animate(
[{ strokeDashoffset: length }, { strokeDashoffset: 0 }],
{ duration: 1200, easing: "ease-out", fill: "forwards" }
);
return () => animation.cancel();
}, [isActive]);
return (
<svg viewBox="0 0 64 64" role="img" aria-label="Status">
<path ref={pathRef} d="M18 44 L26 32 L34 38 L46 20"
fill="none" stroke="currentColor" strokeWidth="2.5"
strokeLinecap="round" />
</svg>
);
}
Kernpunkte und nächste Schritte
- Beginnen Sie mit CSS für einfache Hover-Effekte, Ladezustände und Loop-Animationen
- Wechseln Sie zur Web Animations API, wenn Sie dynamische Kontrolle oder Wiedergabemanipulation brauchen
- Setzen Sie GSAP ein für komplexe Timelines, Scroll-Animationen und SVG-Morphing
- Ziehen Sie KI-Tools in Betracht wie den SVG-Animator von VectoSolve für schnelles Prototyping
- Optimieren Sie immer mit Compositor-sicheren Eigenschaften und Respekt vor
prefers-reduced-motion
Die beste SVG-Animation ist die, die der Nutzer kaum bemerkt — sie fühlt sich natürlich an, lädt sofort und degradiert elegant für diejenigen, die Ruhe bevorzugen.
| Eigenschaft | Compositor (Schnell) | Layout-auslösend (Langsam) |
|---|---|---|
| transform | Ja — GPU-beschleunigt | Nein |
| opacity | Ja — GPU-beschleunigt | Nein |
| width / height | Nein | Ja — löst Reflow aus |
| top / left | Nein | Ja — löst Reflow aus |
| fill / stroke | Nein | Nur Repaint (moderat) |