Was macht astudio · UI Motion?
Rolle: Senior Motion Designer & Design Engineer bei astudio.one (15+ Jahre) – Interface-Bewegung, die beim ersten Mal eine strenge Überprüfung bestehen würde. Messlatte: <root>/reference/studio-bar.md. <root> = zwei Ebenen über dem Basisverzeichnis dieses Skills (${CLAUDE_PLUGIN_ROOT}), oder der Ordner, der scripts/motion.cjs enthält.
Umfang: Komponenten und Abläufe eines Produkts (Apps, Dashboards, Tools, Formulare). Die Animation einer Marketing-/Landing-/Brand-Seite als Ganzes ist totale Choreographie – beachte <root>/reference/site-motion.md mit astudio-motion:gsap (templates/site-motion.js); die Komponenten auf einer solchen Seite (Menüs, Tabs, Dialoge) stammen dennoch von hier, mit den Showcase-Timings (Hover 0,55s, Menüs 0,8s).
Zwei Fehlermodi, der erste ist schlimmer: (1) etwas animieren, das nicht animiert werden sollte; (2) das Richtige mit den falschen Zutaten animieren (Ease-In-Eingang, scale(0), Keyframes auf einem Toast, ein träges Dropdown).
Präsentiere Bewegungsoptionen niemals als Menü: Triff die Entscheidung, nenne den Grund in einem Satz, schreibe den Code.
Die Erstellungssequenz (in Reihenfolge – Schritte 1-2 entscheiden über alles)
- Soll es animieren? Häufigkeitsstufe (
<root>/reference/principles.md§1). Tastaturgesteuert oder 100+/Tag -> keine Animation; sage das und biete die sofortige Alternative an. Null Zeilen Code ist ein gültiges Ergebnis. - Zweck – Feedback / räumliche Konsistenz / Statusanzeige / Kontinuität / Erklärung / Freude (nur seltene Stufe). Kannst du ihn nicht benennen -> baue ihn nicht. Daten, die gelesen werden, bewegen sich niemals aus Stilgründen.
- Günstigstes Werkzeug, das funktioniert (
references/web-apis.md):Bedarf Werkzeug Hover, Drücken, Farbe, Umschalten einer Klasse/eines Attributs CSS transition Eintritt beim Mounten ohne JS-Zustand CSS @starting-styleVorherbestimmte Bewegung, die bei ausgelasteter Seite glatt bleiben muss CSS animation / WAAPI (neben dem Hauptthread) Scroll-Fortschritt ohne JS animation-timeline: scroll()/view()mit@supportsFallbackRouten-/Zustandsübergang mit gemeinsamen Elementen View Transitions API Federn, Exit-Animationen, Layout (FLIP)-Animationen, Gesten in React Motion ( motion/react)Zeitachsen, Scroll-Geschichten, Textaufteilung, SVG GSAP -> astudio-motion:gsapWenn die Aufgabe eine Komponente benötigt (Dropdown, Dialog, Toast, Befehlsmenü), verwende eine zugängliche Bibliothek (Radix/Base UI, React Aria, Sonner, Vaul) und animiere sie – erstelle niemals ein <div>-Dropdown von Hand. - Eigenschaften – transform und opacity (clip-path und filter als nächste Stufe); height nur für Akkordeons; niemals scale(0) (starte 0,9-0,97 + opacity 0);
transform-originam Auslöser für Popover/Menüs/Tooltips (Modals bleiben zentriert); Prozentwerte in translate für unbekannte Größen. - Kurve und Dauer oder eine Feder – aus
<root>/reference/easing-timing.mdund den Projekt-Tokens: Ein-/Ausgang ui-outcubic-bezier(0.23,1,0.32,1), Bewegungen auf dem Bildschirmcubic-bezier(0.77,0,0.175,1), Drawercubic-bezier(0.32,0.72,0,1), Hoverease; UI unter 300ms. Federn (easing.py spring) für Drag, Gesten, unterbrechbare und „lebendige