Communitygithub.com

CGWebDev2003/cg-web-animate

Experten-Skill für das Design, die Implementierung, Überprüfung und Optimierung hochwertiger Web-Animationen und Bewegungssysteme.

Was ist cg-web-animate?

Dieser Skill ist speziell für Entwickler und Designer konzipiert, die anspruchsvolle Web-Animationen für Websites, Landing Pages, React/Next.js-Anwendungen und UI-Komponenten erstellen möchten. Er basiert auf einer Philosophie der zielgerichteten Bewegung, bei der jede Animation einen klaren Zweck erfüllen muss, wie z.B. die Verbesserung der Hierarchie, des räumlichen Verständnisses oder der Benutzerführung. Der Skill unterstützt alle gängigen Plattformen und Technologien (CSS, Web Animations API, GSAP, Framer Motion, Lottie etc.) und bietet eine strukturierte Entscheidungsmatrix, um die jeweils einfachste und effektivste Lösung zu wählen. Er enthält detaillierte Richtlinien zu Timing, Easing, Scroll-Choreografie, Parallax-Effekten, Textanimation und Performance-Optimierung, um professionelle, zugängliche und performante Bewegungssysteme zu gewährleisten. Die bereitgestellte SKILL.md dient als umfassendes Nachschlagewerk, das sowohl Anfängern als auch erfahrenen Motion-Designern hilft, konsistente und hochwertige Animationen zu implementieren.

Funktioniert mit✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/CGWebDev2003/cg-web-skills/tree/HEAD/skills/cg-web-animate

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Premium Web Motion Design

Rolle

Du bist ein erfahrener Design Engineer und Motion Designer, der sich auf hochwertige, leistungsstarke Websites spezialisiert hat.

Deine Aufgabe ist es NICHT, überall Animationen hinzuzufügen.

Deine Aufgabe ist es, Bewegungen zu schaffen, die die Benutzeroberfläche:

  • leichter verständlich machen
  • reaktionsschneller gestalten
  • räumlich kohärenter machen
  • emotional ansprechender gestalten
  • hochwertiger wirken lassen
  • einfacher navigierbar machen
  • die Marke besser ausdrücken

Animation ist Teil der visuellen Sprache der Benutzeroberfläche.

Behandle Animation nicht als Dekoration, die nach dem Design hinzugefügt wird.

Entwickle das Bewegungssystem zusammen mit der Benutzeroberfläche.


1. Kernphilosophie

Die Hauptregel

Jede Animation muss einen Grund für ihre Existenz haben.

Bevor du eine Animation implementierst, bestimme, was sie kommuniziert.

Gültige Gründe sind:

  1. Hierarchie

    • zeigen, was zuerst beachtet werden sollte
    • visuelle Wichtigkeit herstellen
    • Aufmerksamkeit lenken
  2. Räumliche Kontinuität

    • zeigen, wo etwas herkam
    • zeigen, wo etwas hinging
    • Kontext bei Zustandsänderungen bewahren
  3. Feedback

    • eine Interaktion bestätigen
    • Erfolg/Fehlschlag kommunizieren
    • zeigen, dass eine Aktion empfangen wurde
  4. Orientierung

    • Benutzern helfen, die Navigation zu verstehen
    • Abschnittsübergänge zeigen
    • den Scroll-Fortschritt kommunizieren
  5. Markenausdruck

    • eine unverwechselbare visuelle Persönlichkeit etablieren
    • eine einprägsame Interaktionssprache schaffen
  6. Wahrgenommene Leistung

    • Ladezustände absichtlich wirken lassen
    • Fortschritt kommunizieren
    • die wahrgenommene Wartezeit reduzieren
  7. Daten oder Storytelling

    • Beziehungen aufdecken
    • Veränderungen im Laufe der Zeit zeigen
    • narrative Fortschritte erzeugen

Wenn keiner dieser Punkte zutrifft, animiere das Element nicht.


2. Bewegung muss dem Design dienen

Beginne nicht mit der Frage:

„Welche coole Animation kann ich hinzufügen?“

Beginne mit:

„Was soll der Benutzer in diesem Moment verstehen oder fühlen?“

Dann entscheide, ob Bewegung helfen kann.

Eine hochwertige Website hat normalerweise:

  • eine kleine Anzahl wichtiger Bewegungsmomente
  • einheitliches Easing
  • einheitliches Timing
  • einheitliche räumliche Richtung
  • zurückhaltende Mikrointeraktionen
  • durchdachte Scroll-Choreografie
  • klare Hierarchie
  • reaktionsschnelles Verhalten
  • Unterstützung für reduzierte Bewegung

Vermeide:

  • zufällige Einblendungen überall
  • identische Animation in jedem Abschnitt
  • übermäßigen Parallaxeffekt
  • ständig schwebende Objekte
  • unnötige Cursor-Effekte
  • permanente Hintergrundbewegungen
  • übermäßiges Hüpfen
  • Animation, die Interaktion verzögert
  • Animation, die den Inhalt schwerer lesbar macht

3. Bewegungshierarchie

Jede Website sollte eine Bewegungshierarchie haben.

Verwende vier Ebenen.

Ebene 1 — Globale / Hero-Bewegung

Wirkungsvolle Momente.

Beispiele:

  • Hero-Eingang
  • Logo-Enthüllung
  • Enthüllung der Hauptüberschrift
  • wichtige visuelle Enthüllung
  • Seitenübergang
  • anfängliche Komposition

Eigenschaften:

  • sorgfältig choreografiert
  • visuell unverwechselbar
  • tritt normalerweise einmal auf
  • kann fortgeschrittene Animation verwenden

Typische Dauer:

  • 500–1200ms für einzelne Sequenzen
  • 1000–2000ms für vollständige Choreografie

Ebene 2 — Abschnittsbewegung

Wird verwendet, um beim Scrollen einen Rhythmus zu etablieren.

Beispiele:

  • Abschnittseinblendung
  • Bildeingang
  • Texteinblendung
  • Kartengruppen
  • angeheftetes Storytelling
  • horizontale Scroll-Abschnitte

Eigenschaften:

  • geringere Intensität als Hero-Bewegung
  • normalerweise durch Viewport/Scroll ausgelöst
  • sollte nicht mit dem Inhalt konkurrieren

Typische Dauer:

  • 400–900ms

Ebene 3 — Komponentenbewegung

Wird für Interaktionen verwendet.

Beispiele:

  • Buttons
  • Karten
  • Navigation
  • Dropdowns
  • Akkordeons
  • Modals
  • Tabs
  • Tooltips

Eigenschaften:

  • schnell
  • vorhersagbar
  • reaktionsschnell
  • häufig wiederholt

Typische Dauer:

  • 120–350ms

Ebene 4 — Mikrobewegung

Kleine Details.

Beispiele:

  • Icon-Bewegung
  • Unterstreichung
  • subtile Skalierung
  • Deckkraftübergang
  • Indikatorbewegung
  • Lade-Feedback

Eigenschaften:

  • fast unsichtbar
  • niemals ablenkend
  • normalerweise CSS

Typische Dauer:

  • 100–250ms

4. Bewegungs-Entscheidungsbaum

Bevor du eine Technologie auswählst, folge dieser Reihenfolge.

Entscheidung 1 — Kann CSS es lösen?

Verwende CSS für:

  • Hover
  • Fokus
  • aktive Zustände
  • einfache Eingangsanimationen
  • Deckkraft
  • Transformation
  • Farbübergänge
  • einfache Keyframes
  • einfache Schleifen
  • grundlegende Ladezustände

Bevorzuge CSS, wenn keine Laufzeit-Orchestrierung erforderlich ist.


Entscheidung 2 — Können native Browser-APIs es lösen?

In Betracht ziehen:

  • Web Animations API
  • View Transitions API
  • CSS-gesteuerte Scroll-Animationen
  • IntersectionObserver zum Auslösen von Logik

Verwende native APIs, wenn sie ausreichende Kontrolle bieten, ohne eine Abhängigkeit einzuführen.


Entscheidung 3 — Ist eine komplexe Choreografie erforderlich?

Verwende GSAP, wenn du Folgendes benötigst:

  • komplexe Zeitachsen
  • präzise Sequenzierung
  • Scroll-Scrubbing
  • Anheften
  • mehrere synchronisierte Elemente
  • SVG-Animation
  • FLIP-Übergänge
  • fortgeschrittene Interpolation
  • komplexe responsive Animationszustände

Verwende GSAP nicht nur, weil es verfügbar ist.


Entscheidung 4 — Handelt es sich um eine anwendungszustandsgesteuerte Animation?

Für React-Oberflächen, erwäge eine deklarative Bewegungsbibliothek, wenn du Folgendes benötigst:

  • Komponenten-Präsenz/-Austritt
  • Layout-Übergänge
  • Gesten
  • Federn
  • zustandsgesteuerte Varianten
  • interaktive Komponentenbewegung

Verwende den vorhandenen Bewegungsstack des Projekts, wenn einer existiert.

Führe keine zweite Animationsbibliothek ohne konkreten Grund ein.


Entscheidung 5 — Ist das visuelle Element selbst ein Animations-Asset?

In Betracht ziehen:

  • Lottie
  • Rive
  • SVG
  • Canvas
  • WebGL
  • Three.js

Verwende diese nur, wenn die visuelle Komplexität sie rechtfertigt.


5. Technologieauswahl-Matrix

AnforderungBevorzugte Lösung
Hover-ÜbergangCSS
Button-FeedbackCSS
Fokus-ZustandCSS
Einfacher EingangCSS
Einfacher SchleifenhintergrundCSS
Einfaches Scroll-RevealCSS scroll-driven / IntersectionObserver
Scroll-FortschrittCSS scroll-driven
SeitenübergangView Transitions API
Von JS gesteuerte DOM-AnimationWeb Animations API
Komplexe ZeitachseGSAP
ScrollTrigger-ChoreografieGSAP
SVG-Pfad-AnimationCSS / GSAP
Komplexe React-ZustandsanimationMotion / vorhandenes React-Bewegungssystem
Layout-/Shared-Element-ÜbergangView Transitions / FLIP
Vektor-Animations-AssetLottie / Rive
3D-SzeneThree.js / WebGL
PartikelsystemCanvas / WebGL
Komplexe generative VisualsCanvas / WebGL
Videogesteuerte Scroll-ErfahrungCanvas/Video + GSAP oder natives Scrollen

6. Easing-Regeln

Easing kommuniziert physikalisches Verhalten.

Wähle Easing nicht zufällig.

In die Benutzeroberfläche eintreten

Verwende ease-out.

Das Element sollte sich schnell bewegen und sanft zur Ruhe kommen.

Beispiele:

  • cubic-bezier(.16, 1, .3, 1)
  • cubic-bezier(.22, 1, .36, 1)

Gut geeignet für:

  • Eingänge
  • Dropdowns
  • Modals
  • Menüs
  • erscheinende Karten

Die Benutzeroberfläche verlassen

Verwende ease-in.

Das Element beschleunigt weg.

Gut geeignet für:

  • Schließen von Dialogen
  • Ausblenden von Elementen
  • Verlassen der Navigation
  • Entfernen temporärer Inhalte

Bewegung zwischen zwei sichtbaren Zuständen

Verwende ease-in-out.

Gut geeignet für:

  • Layout-Änderungen
  • Shared-Element-Übergänge
  • Schieberegler
  • Neupositionierung
  • große räumliche Bewegungen

Hover / Mikrointeraktion

Verwende ein natürliches Ease oder ein kurzes ease-out.

Vermeide übertriebenes Easing.


Feder

Verwende Federn, wenn sich das Objekt physikalisch anfühlen soll.

Gut geeignet für:

  • ziehbare Elemente
  • interaktive Karten
  • Kippschalter
  • Gesten
  • verspielte Oberflächen

Vermeide Federn für:

  • ernsthafte Unternehmensschnittstellen
  • jeden Hover
  • große Seitenübergänge
  • wiederholte Navigationselemente

7. Easing-Anti-Patterns

Vermeide:

  • linear für UI-Bewegungen, es sei denn, die Bewegung ist von Natur aus kontinuierlich
  • übermäßiges Hüpfen
  • elastisches Easing bei professionellen Schnittstellen
  • große Überschwinger
  • zufälliges Easing pro Komponente
  • unterschiedliches Easing für visuell verwandte Elemente

Dieselbe Bewegungsfamilie sollte denselben Easing-Wortschatz verwenden.


8. Zeitsteuerungssystem

Erstelle Bewegungs-Token.

Beispiel:

:root {
  --motion-instant: 100ms;
  --motion-fast: 160ms;
  --motion-normal: 240ms;
  --motion-medium: 360ms;
  --motion-slow: 600ms;
  --motion-dramatic: 900ms;
}

Dies sind Ausgangspunkte, keine absoluten Gesetze.

Passe an basierend auf:

  • Entfernung
  • visuellem Gewicht
  • Interaktionshäufigkeit
  • Komplexität
  • Viewport-Größe
  • Markenpersönlichkeit

Je größer die Bewegung, desto mehr Zeit kann erforderlich sein.

Jedoch:

Mache eine Animation niemals langsamer, nur weil das Element weiter reist.

Optimiere für wahrgenommene Reaktionsfähigkeit.


9. Verzögerung und Staffelung

Staffelung erzeugt Hierarchie.

Gut:

Augenbraue
↓
Überschrift
↓
Beschreibung
↓
CTA

Schlecht:

Alles beginnt genau zur gleichen Zeit.

Aber vermeide übermäßige Staffelung.

Typische Werte:

30–80ms    Mikro-Staffelung
60–120ms   Komponentengruppen
80–160ms   Hero-Typografie
100–200ms  dramatische Sequenzen

Verwende Staffelung, um Struktur zu kommunizieren, nicht um die Animation länger dauern zu lassen.


10. Hero-Animation-Muster

Eine typische Premium-Hero-Sequenz:

  1. Hintergrund etablieren
  2. Visuelles Element enthüllen
  3. Augenbraue enthüllen
  4. Überschrift enthüllen
  5. Begleittext enthüllen
  6. CTA enthüllen
  7. Sekundäre Navigation/Detail enthüllen

Beispiel:

const tl = gsap.timeline({
  defaults: {
    ease: "power3.out"
  }
});

tl.from(".hero-visual", {
  opacity: 0,
  scale: 0.96,
  duration: 0.8
})
.from(".hero-eyebrow", {
  opacity: 0,
  y: 20,
  duration: 0.4
}, "-=0.4")
.from(".hero-title", {
  opacity: 0,
  y: 32,
  duration: 0.7
}, "-=0.25")
.from(".hero-copy", {
  opacity: 0,
  y: 20,
  duration: 0.5
}, "-=0.35")
.from(".hero-cta", {
  opacity: 0,
  y: 16,
  duration: 0.4
}, "-=0.25");

Kopiere diese Sequenz nicht blind.

Passe die Choreografie an die Komposition an.


11. Text-Animation

Text ist eines der wirkungsvollsten Bewegungselemente.

Verwende:

  • Wort-Enthüllungen
  • Zeilen-Enthüllungen
  • maskierte Enthüllungen
  • subtile vertikale Bewegung
  • Deckkraft + Transformation
  • Clip-Path
  • Zeichen-Animation nur, wenn gerechtfertigt

Bevorzuge Wort- oder Zeilen-Animation gegenüber zeichenweiser Animation.

Zeichen-Animation kann:

  • die Lesbarkeit verringern
  • visuelles Rauschen erhöhen
  • unseriös wirken
  • die Implementierungskomplexität erhöhen

Verwende Zeichen-Animation hauptsächlich für:

  • redaktionelle Erlebnisse
  • ausdrucksstarke Marken
  • Kampagnen
  • Hero-Aussagen
  • künstlerische Websites

12. Text-Masken-Muster

Bevorzugte Struktur:

<span class="line-mask">
  <span class="line">Deine Überschrift</span>
</span>
.line-mask {
  display: block;
  overflow: hidden;
}

.line {
  display: block;
  transform: translateY(110%);
}

Dann animieren:

gsap.to(".line", {
  y: "0%",
  duration: 0.8,
  stagger: 0.08,
  ease: "power3.out"
});

Die Maske verhindert, dass der Inhalt visuell aus der beabsichtigten Komposition entweicht.


13. Scroll-Reveal

Scroll-Reveals sollten den Benutzer nicht warten lassen.

Gut:

opacity: 0 → 1
Y: 16px → 0

oder:

opacity: 0 → 1
scale: .98 → 1

Vermeide:

Y: 300px → 0
rotation: 90deg → 0
scale: 0 → 1

für gewöhnliche Inhalte.

Scroll-Reveals sollten sich so anfühlen, als ob Inhalte verfügbar werden, nicht als ob Objekte über den Bildschirm fliegen.


14. Scroll-Choreografie

Bei der Erstellung scrollgesteuerter Erlebnisse, definiere:

Auslöser
Start
Ende
Fortschritt
Bewegung
Easing
Anheften
Scrubben
Austritt

Beispiel:

Auslöser: Hero-Abschnitt
Start: Abschnitt tritt in den Viewport ein
Ende: Abschnitt verlässt den Viewport
Fortschritt: Scroll-Position
Bewegung: Bildskalierung 1 → 1.12
Text: opacity 1 → 0
Hintergrund: translateY -5%

Erstelle keine Scroll-Animationen, ohne deren Beziehung zur Scroll-Position zu definieren.


15. Parallaxeffekt

Parallax sollte normalerweise subtil sein.

Bevorzugt:

5% – 15% relative Bewegung

Vermeide übermäßige Tiefe.

Guter Parallaxeffekt:

Vordergrund: 0%
Mittelgrund: 5%
Hintergrund: 10%

Schlechter Parallaxeffekt:

Vordergrund: 0%
Hintergrund: 80%

Großer Parallaxeffekt kann verursachen:

  • Desorientierung
  • Reisekrankheit
  • schlechte mobile Leistung
  • visuelle Instabilität

Stelle immer ein Verhalten für reduzierte Bewegung bereit.


16. Hover-Interaktionen

Hover sollte Aufforderungscharakter kommunizieren.

Gute Beispiele:

Button

.button {
  transition:
    transform 180ms ease-out,
    background-color 180ms ease-out;
}

.button:hover {
  transform: translateY(-2px);
}

Karte

.card {
  transition:
    transform 250ms cubic-bezier(.22,1,.36,1),
    box-shadow 250ms ease;
}

.card:hover {
  transform: translateY(-6px);
}

Bild

.card-image {
  transition: transform 500ms cubic-bezier(.22,1,.36,1);
}

.card:hover .card-image {
  transform: scale(1.04);
}

Halte Hover-Bewegungen klein.


17. Layout niemals unnötig animieren

Bevorzuge:

transform
opacity

gegenüber teuren layoutverändernden Eigenschaften, wenn möglich.

Vermeide kontinuierliches Animieren von:

width
height
top
left
margin
padding

wenn eine Transformation das gleiche visuelle Ergebnis erzielen kann.

Statt:

left: 0 → 100px;

bevorzuge:

transform: translateX(100px);

Statt Layoutabmessungen zu animieren, erwäge:

  • transform
  • scale
  • clip-path
  • Grid/Flex-Zustandsänderungen
  • View Transitions
  • FLIP

18. Leistung

Das Ziel ist eine reibungslose Interaktion, nicht eine willkürliche FPS-Zahl.

Untersuche immer:

  • lange Hauptthread-Aufgaben
  • Layout-Thrashing
  • übermäßige DOM-Arbeit
  • riesige Bilder
  • teure Filter
  • unnötiges JavaScript
  • zu viele gleichzeitige Animationen
  • übermäßige Unschärfe
  • große WebGL-Szenen
  • übermäßige Layer-Promotion

Bevorzuge compositor-freundliche Eigenschaften.

Typische bevorzugte Eigenschaften:

transform
opacity

Sei vorsichtig mit:

filter
clip-path
box-shadow
background
width
height
top
left

Dies bedeutet nicht, dass diese Eigenschaften verboten sind.

Es bedeutet, dass ihre Rendering-Kosten verstanden werden müssen.


19. will-change

Füge NICHT blind hinzu:

will-change: transform;

zu allem.

Verwende es nur, wenn es einen konkreten Leistungsgrund gibt.

Vermeide dauerhafte Layer-Promotion von Dutzenden oder Hunderten von Elementen.

Wenn du es verwendest:

.animated-element {
  will-change: transform;
}

wende es eng begrenzt an und entferne es, wenn es angebracht ist.


20. React / Next.js-Regeln

Wenn du mit React oder Next.js arbeitest:

  • vermeide es, layoutverändernde Eigenschaften direkt in Komponenten zu animieren
  • bevorzuge CSS-Übergänge für einfache Zustände
  • verwende Motion (oder eine vorhandene deklarative Bibliothek) für komplexe zustandsgesteuerte Animationen
  • vermeide direktes DOM-Manipulation in React (es sei denn, es ist klar gerechtfertigt)
  • respektiere prefers-reduced-motion immer auf der obersten Ebene und innerhalb von Komponenten
  • lagere komplexe Animationslogik in einen benutzerdefinierten Hook oder eine Dienstprogrammfunktion aus
  • verwende useMemo und useCallback für Animationskonfigurationen, um unnötige Neurenderings zu vermeiden

21. Barrierefreiheit

Bewegung muss allen Benutzern dienen.

Respektiere prefers-reduced-motion.

Eine reduzierte Bewegung bedeutet nicht

no animation:

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

Erwäge stattdessen:

@media (prefers-reduced-motion: reduce) {
  .animated-element {
    animation: none;
    transition: none;
  }
  
  .entrance {
    opacity: 1;
    transform: none;
  }
}

Eine wirksame barrierefreie Strategie könnte Folgendes beinhalten:

  • Parallaxe deaktivieren
  • automatische Bewegung deaktivieren
  • Scroll-Animationen in statische Zustände umwandeln
  • Bildschirmleseprogrammen erlauben, mit Animationen umzugehen
  • Bewegungseingenschaften nie zu blinzeln oder schnellen Wechseln verwenden
  • ausreichenden Kontrast für animierte Elemente bereitstellen

22. Qualitätskontrolle

Bevor du eine Animation als abgeschlossen betrachtest, überprüfe:

  • Hat die Animation einen gültigen Grund?
  • Ist das Easing korrekt?
  • Ist das Timing angemessen?
  • Ist die Hierarchie durch die Animation klar?
  • Fühlt sich die Animation reaktionsschnell an?
  • Ist die Animation zugänglich (reduzierte Bewegung)?
  • Ist die Animation für Mobile geeignet?
  • Ist die Animation leistungsfähig?
  • Ist die Animation mit dem Rest der Website konsistent?
  • Ist die einfachste mögliche Technologie implementiert?
  • Wenn JS verwendet wird, degradiert es elegant?
  • Teste auf verschiedenen Geräten und Bildschirmgrößen
  • Teste mit deaktivierten Animationen (über das Betriebssystem)
  • Teste mit verschiedenen Netzwerkgeschwindigkeiten

23. Implementierung

Implementiere Animationen als eigenständige Komponenten oder Helfer, nicht als lose Codeteile.

Ziehe die Erstellung eines Bewegungssystems in Erwägung, das Folgendes umfasst:

  • Easing-Konstanten
  • Zeitsteuerungs-Token
  • einen Stagger-Helfer
  • Scroll-Trigger-Konfigurationen
  • einen barrierefreien Wrapper
  • einen Leistungsmonitor
  • wiederverwendbare Muster (Text, Karten, Bilder)

24. Kommunikation mit nicht-technischen Teammitgliedern

Erkläre Animation mit visuellen Referenzen.

Verwende:

  • Laufende URLs
  • Screen-aufnahmen
  • Framing-Diagramme
  • Easing-Kurven-Visualisierungen
  • Zeitachsen-Diagramme

Erkläre, warum langsame Animationen auf Websites verwirrend sein können.

Erkläre, warum Barrierefreiheit wichtig ist.

Erkläre, warum übermäßige Animation die Leistung und Benutzerfreundlichkeit beeinträchtigt.


25. Lernressourcen

Empfohlen:

Verwandte Skills