← Zurück zu Mediendesign & Digitale Medien
SVG Animationen sind Animationen von SVG-Elementen (Skalierbare Vektorgrafiken) direkt im Browser, entweder deklarativ über SMIL, über CSS oder via JavaScript, und verbinden die Skalierbarkeit von Vektorgrafiken mit der Ausdrucksstärke von Animation.

Was sind SVG Animationen?

SVG (Scalable Vector Graphics) ist ein XML-basiertes Grafikformat, das nativ im Browser dargestellt wird. Da SVG-Elemente Teil des DOM sind, können sie mit CSS gestylt, per JavaScript manipuliert und auf vielfältige Weise animiert werden.

SVG-Animationen sind ideal für:

  • Animierte Icons und Logos
  • Infografiken mit Daten-Visualisierungen
  • Illustrative Animationen und Charaktere
  • Interaktive Karten und Diagramme
  • Linienzeichnungs-Animationen (Draw-on-Effekte)

Erklärung

Methoden für SVG-Animationen

Es gibt drei Hauptwege, SVG zu animieren:

1. SMIL (Synchronized Multimedia Integration Language) SMIL ist die native XML-Animations-Syntax innerhalb von SVG:

``xml <svg viewBox="0 0 100 100"> <circle cx="50" cy="50" r="20" fill="#0078ff"> <animate attributeName="r" values="20;35;20" dur="2s" repeatCount="indefinite"/> <animate attributeName="opacity" values="1;0.3;1" dur="2s" repeatCount="indefinite"/> </circle> </svg> ``

SMIL wird von modernen Browsern unterstützt, aber Chrome hat in der Vergangenheit Deprecation-Warnungen ausgegeben. Für neue Projekte bevorzugt man CSS oder JavaScript.

2. CSS-Animationen auf SVG-Elementen

```css .kreis { animation: pulsieren 2s ease-in-out infinite; transform-origin: center; }

@keyframes pulsieren { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.2); opacity: 0.7; } } ```

``xml <svg viewBox="0 0 100 100"> <circle class="kreis" cx="50" cy="50" r="25" fill="#0078ff"/> </svg> ``

Achtung: transform-origin verhält sich in SVG anders als in HTML. Cassie Evans hat dies ausführlich dokumentiert (2021): In SVG bezieht sich transform-origin auf das SVG-Koordinatensystem, nicht auf das Element selbst. Lösung:

``css /* Für inline SVG */ .svg-element { transform-box: fill-box; /* Koordinatenursprung auf das Element */ transform-origin: center; } ``

3. JavaScript (GSAP, WAAPI, vanilla)

Für komplexe Animationen ist JavaScript die mächtigste Option.

Stroke-Dashoffset: Der Linienzeichnungs-Effekt

Der populärste SVG-Animationseffekt ist das schrittweise „Zeichnen" von Pfaden:

```javascript const pfad = document.querySelector('.pfad'); const laenge = pfad.getTotalLength();

// Initialer Zustand: Linie unsichtbar pfad.style.strokeDasharray = laenge; pfad.style.strokeDashoffset = laenge;

// CSS-Animation zum Einzeichnen pfad.style.transition = 'stroke-dashoffset 2s ease-in-out'; pfad.style.strokeDashoffset = 0; ```

Oder mit GSAP:

```javascript gsap.set(pfad, { strokeDasharray: laenge, strokeDashoffset: laenge });

gsap.to(pfad, { strokeDashoffset: 0, duration: 2, ease: 'power2.inOut' }); ```

SVG Morphing

Pfad-Morphing (ein SVG-Pfad verwandelt sich in einen anderen) ist einer der beeindruckendsten SVG-Effekte:

```javascript // Nur mit GSAP MorphSVG Plugin (Club GSAP) import { MorphSVGPlugin } from 'gsap/MorphSVGPlugin'; gsap.registerPlugin(MorphSVGPlugin);

gsap.to('#stern', { morphSVG: '#herz', // Stern morpht zu Herz duration: 1, ease: 'power2.inOut' }); ```

Für Open-Source-Morphing: flubber.js (Veltman, 2017).

Animierte Gradients

```css @keyframes gradientBewegung { 0% { stop-color: #0078ff; } 50% { stop-color: #8800ff; } 100% { stop-color: #0078ff; } }

.gradient-stopp1 { animation: gradientBewegung 3s ease infinite; } ```

``xml <svg> <defs> <linearGradient id="animierterGradient"> <stop class="gradient-stopp1" offset="0%" /> <stop offset="100%" stop-color="#ff4400" /> </linearGradient> </defs> <rect fill="url(#animierterGradient)" width="200" height="100"/> </svg> ``

Beispiele

Animiertes Logo (Strich für Strich)

```javascript const pfade = document.querySelectorAll('.logo path');

pfade.forEach(pfad => { const laenge = pfad.getTotalLength(); gsap.set(pfad, { strokeDasharray: laenge, strokeDashoffset: laenge }); });

gsap.to('.logo path', { strokeDashoffset: 0, duration: 0.8, stagger: 0.2, ease: 'power3.out', onComplete: () => { // Nach dem Zeichnen: Füllfarbe einblenden gsap.to('.logo path', { fillOpacity: 1, duration: 0.4 }); } }); ```

Interaktives SVG-Icon (Hamburger → X)

```javascript const hamburger = document.querySelector('.hamburger-btn'); let istOffen = false;

hamburger.addEventListener('click', () => { istOffen = !istOffen;

if (istOffen) { gsap.to('.linie-1', { y: 6, rotation: 45, transformOrigin: 'center', duration: 0.3 }); gsap.to('.linie-2', { opacity: 0, duration: 0.2 }); gsap.to('.linie-3', { y: -6, rotation: -45, transformOrigin: 'center', duration: 0.3 }); } else { gsap.to('.linie-1', { y: 0, rotation: 0, duration: 0.3 }); gsap.to('.linie-2', { opacity: 1, duration: 0.2, delay: 0.1 }); gsap.to('.linie-3', { y: 0, rotation: 0, duration: 0.3 }); } }); ```

Daten-Diagramm animiert

```javascript // Balkendiagramm-Bars einfahren const bars = document.querySelectorAll('.balken');

bars.forEach(bar => { const zielHoehe = bar.dataset.wert; // Aus HTML-Data-Attribut

gsap.from(bar, { scaleY: 0, transformOrigin: 'bottom', duration: 0.8, ease: 'power2.out', scrollTrigger: { trigger: '.diagramm', start: 'top 70%' } }); }); ```

In der Praxis

SVG-Animationen werden oft in Kombination mit Lottie, After Effects Animationen im Web diskutiert. Der Hauptunterschied: Lottie exportiert Animationen aus After Effects als JSON, während native SVG-Animationen direkt im Code definiert werden, was Entwicklern mehr Kontrolle, aber Motion Designern weniger vertraute Werkzeuge bietet.

SVG optimieren vor der Animation: Exportierte SVGs aus Illustrator oder Figma enthalten oft unnötigen Code. Tools:

  • SVGO (Kommandozeile) oder SVG OMG (Browser)
  • Unnötige IDs, Kommentare, und Präfixe entfernen
  • Pfade wo möglich vereinfachen

Performance: SVG-Animationen, die transform und opacity nutzen, sind performant. Animationen auf width, height, x, y (SVG-Attribute statt CSS) können Repaints verursachen.

Vergleich & Abgrenzung

SVG-AnimationLottie, After Effects Animationen im WebCSS Animationen & Transitions
WorkflowCode/DesignAfter EffectsCode
SkalierbarJaJaNein (bei Raster)
DateigrößeKleinKlein (JSON)0 extra
MorphingMit LibraryJa (AE-Shapes)Nein
ToolingGSAP, CSSLottie-PlayerNative

Häufige Fragen (FAQ)

Kann ich Animationen aus Illustrator direkt verwenden? Illustrator exportiert keine Animationen. Man exportiert SVG (statisch) und animiert anschließend per Code. Für animierten Export: After Effects + Bodymovin → Lottie.

Warum funktioniert meine `transform-origin`-Deklaration nicht wie erwartet? In SVG ist der Standard-Ursprung (0,0) des SVG-Koordinatensystems, nicht das Elementzentrum. transform-box: fill-box löst das Problem.

Unterstützen alle Browser SMIL? Ja, aber Chrome hatte Deprecation-Pläne (nie durchgeführt). Für neue Projekte: CSS oder JS statt SMIL.

Verwandte Einträge

Weiterführend

  • Cassie Evans: SVG Animations (2021, Talk), cassie.codes
  • Cassie Evans: Transforms on SVG elements, css-tricks.com (2021)
  • MDN: SVG animation with SMIL, developer.mozilla.org
  • Sarah Drasner: SVG Animations (2017), O'Reilly Media
  • GSAP: SVG Tips for GSAP, greensock.com/svg-tips
  • SVGO: github.com/svg/svgo
← Zurück zu Mediendesign & Digitale Medien
Infotag

Sei am Mittwoch dabei.
Bring Eltern oder Freunde mit.

Ein halber Nachmittag, der dir drei Jahre Klarheit bringen kann. Kostenlos, unverbindlich, ehrlich.

  • Rundgang durch Studios, Schnitträume und Tonstudio
  • Echte Absolventenfilme sehen
  • 1:1-Beratung zu Bewerbung & BAföG
  • Studierende direkt fragen
  • Kaffee, kein Sales-Pitch
  • Auch online möglich

Platz beim Infotag reservieren

Dauert 30 Sekunden. Bestätigung per E-Mail.
100 % kostenlos · keine Verpflichtung · jederzeit absagbar