CommunityBildgithub.com

Bewegungsabstufungen und Hover-Rezepte

Verleihe einer Oberfläche ein gemeinsames Tempo und ein kleines Vokabular an Hover- und Zustands-Mikrointeraktionen: Dauerabstufungen (tap/pop/hover/card/layout) für CSS und Motion, Swap-Übergaben, Zeilen mit wachsender Hervorhebung, nachlaufende Pfeile, Chevron-Nudges, Kartenheben ohne translate, Scrollrand-Ausblendungen sowie Icon- und Labelwechsel für Kopier- und Toggle-Buttons.

Was ist Bewegungsabstufungen und Hover-Rezepte?

Dieses Skill bietet ein konsistentes System für Mikrointeraktionen und Hover-Zustände, das auf zwei Kernideen basiert: (1) Dauern werden als Skala definiert, nicht als separate Zahlen pro Komponente – kleinere Elemente bewegen sich schneller, sodass das gesamte Interface ein gemeinsames Tempo erhält. (2) Hover-Effekte verändern die Geometrie sanft (z. B. eine Hervorhebung, die in die Zeile hineinwächst, oder ein Pfeil, der erscheint), anstatt nur die Farbe zu wechseln. Das Skill definiert fünf Dauerabstufungen (tap, pop, hover, card, layout) mit empfohlenen Millisekunden und zugehörigen cubic-bezier-Funktionen für Eintritts- und Austrittsanimationen. Es enthält fertige Rezepte wie hover-grow, trail, nudge, lift, scroll-fade sowie Komponenten IconSwap und LabelSwap für nahtlose Zustandswechsel. Es werden Plattformen wie Tailwind v4 (CSS), Framer Motion und WAAPI unterstützt. Typische Anwendungsfälle sind inkonsistente Animationen, verstreute magische Zahlen in Dauern, flache Produkte oder fehlende Hover-Details. Das Skill triggert auf Properties wie animation-duration, transition-timing, hover-state, micro-interaction, polish, copy-button-feedback, menu-icon-to-close, back-arrow, card-hover, scroll-fade, motion-tokens und framer-motion-durations.

Funktioniert mit~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Adamparishspok/skills/tree/HEAD/skills/motion-and-hover-polish

Installed? Explore more Bild skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht Bewegungsabstufungen und Hover-Rezepte?

Zwei Ideen, bewährt in 17 Prototyp-Apps:

  1. Dauern sind eine Skala, keine Zahl pro Komponente. Das Auge liest ein gemeinsames Tempo als ein Produkt. Kleinere Dinge bewegen sich schneller.
  2. Hover verändert die Geometrie, sanft. Eine Hervorhebung, die in die Zeile hineinwächst, ein Pfeil, der ankommt, ein Chevron, das sich in die Richtung neigt, in die es geht, ein Label, das in seinen nächsten Zustand rollt. Nur farbliche Hover wirken wie ein Schalter, der umlegt.

Dateien

  • references/recipes.css: Tailwind v4 @theme-Tokens und @utility-Rezepte.
  • references/timing.ts: Dieselben Abstufungen für Motion und WAAPI.
  • references/swap.tsx: IconSwap und LabelSwap (React).

Abstufungen

AbstufungmsVerwendung
tap100Ein Icon, das wechselt, ein Drücken
pop150Ein Menü, Popover oder Tooltip öffnet sich
hover200Eine Zeile oder ein Steuerelement antwortet auf den Zeiger
card300Eine Karte hebt sich, eine Liste setzt sich, ein Seitenwechsel
layout500Ein Panel klappt zusammen, die Seite fließt um
  • Eintritte easing-out (cubic-bezier(0.22,1,0.36,1)). Austritte easing-in und laufen eine Abstufung kürzer.
  • Wenn zwei Dinge die Plätze tauschen, verlässt das ausgehende sofort und das eingehende startet mit delay-handoff (50ms) Verzögerung.
  • Wert-Tweens (ein Zähler, ein sich füllender Balken, eine sich zeichnende Diagrammlinie) dürfen länger laufen: Das Auge folgt den Daten.
  • Absichtliche Federn beibehalten.

Migration: Jede ad-hoc Dauer der nächsten Abstufung zuordnen.

Ad-hoc-WertAbstufung
0.12tap
0.15–0.18pop
0.2–0.24hover
0.28–0.35card
0.4–0.5layout

Erwarten Sie, dass sich die Timing auf dem Bildschirm fast überall um unter 20ms ändert.

Rezepte (eines pro Element)

  • hover-grow (Navigationszeilen, Linkzeilen):
    • Die Hervorhebung ist ein ::before, das innenliegend (3px mal 6px) und transparent beginnt und dann zur vollen Zeile anschwillt, während es einblendet.
    • Es zeigt sich auch bei :focus-visible, data-state=open und aria-current=page.
    • Quadratische oder brutalistische Designs (Carbon-ähnlich) sollten stattdessen eine flache Hervorhebung verwenden.
  • trail (Linkzeilen, „Pläne durchsuchen“):
    • Ein nachlaufendes Glyph in halber Größe und transparent, bis das übergeordnete .group gehovt oder fokussiert wird, wobei es von seiner Vorderkante her wächst.
    • trail-out (wächst von unten links) plus arrow-up-right markiert Links, die die App verlassen.
  • nudge / nudge-back (Chevrons, „Alle anzeigen“, Zurück-Links): eine 2px-Neigung in Richtung des Ziels.
  • lift (klickbare Karten):
    • Eine Oberflächenstufe heller und eine Schattenstufe tiefer, über der card-Abstufung.
    • Niemals translate: Eine Karte, die unter dem Cursor springt, bewegt das, worauf gezielt wird.
  • scroll-fade (scrollende Bereiche):
    • Maskenbasierte Randausblendungen, nur auf einer Seite, die noch scrollen kann. Sie wird vom eigenen Scroll-Zeitplan des Containers gesteuert und benötigt keine Hintergrundfarbe.
    • Nicht unterstützte Browser zeigen einfach keine Ausblendung.
  • IconSwap (Menü zu Schließen, Kopieren zu Haken, Sonne zu Mond):
    • Das ausgehende Glyph schrumpft, neigt sich um −22° und blendet mit ease-in aus.
    • Das eingehende folgt nach der Übergabeverzögerung.
    • Beide bleiben montiert, sodass es sich sauber mitten im Flug umkehren lässt.
  • LabelSwap („Link kopieren“ zu „Kopiert“, „Einklappen“ zu „Ausklappen“):
    • Beide Labels sitzen in einer Gitterzelle, sodass es keinen Breitensprung gibt.
    • Das verborgene Label geht über transition-discrete auf invisible, sodass assistive Technologien nur das aktuelle hören.

Fallen

  • scroll-fade auf einem Element, das sich selbst animiert (Radix-Menü, Popover- oder Select-Inhalt) ersetzt dessen Exit-Animation. Radix wartet auf einen Exit, der nie endet, und das Menü bleibt offen. Setzen Sie die Ausblendung auf ein scrollendes Kindelement im Inneren.
  • scroll-fade maskiert auch Rahmen und Schatten. Nicht auf eine Karte mit Rahmen setzen; sondern auf den inneren Scroller.
  • Benutzerdefinierte duration-*-Utilities in Tailwind v4 müssen auch --tw-duration setzen, sonst gewinnt eine transition-[…]-Utility auf demselben Element je nach Sortierreihenfolge.
  • Benannte Typ-Schritte, die eine Zeilenhöhe mitführen (--text-meta--line-height) verschieben jede konvertierte Zeile um ein Pixel, wenn man willkürliche Größen ersetzt, die die Zeilenhöhe des Elternelements geerbt haben. Geben Sie Zwischenschritten keine eigene Zeilenhöhe.
  • Hover hinter @media (hover: hover) schalten. Denselben Zustand bei :focus-visible anzeigen und prefers-reduced-motion respektieren (Motion: <MotionConfig reducedMotion="user">).

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Adamparishspok/skills

Make a website, web app or online store ready for AI agents. Scan it with Cloudflare's Agent Readiness checks, decide which checks apply to this kind of site, ship the discovery files and headers in priority order, and add the AI-first basics the scanner does not score (server-rendered content, JSON-LD, llms.txt). Covers robots.txt AI rules, Content Signals, sitemap, Markdown for Agents (Accept text/markdown), Link headers, API catalog, OAuth discovery, auth.md, MCP server card, A2A agent card, agent skills index, WebMCP, and commerce protocols (ACP, UCP, AP2, MPP, x402). Use when making a site AI-ready, agent-ready or AI-first, or fixing an isitagentready.com or Cloudflare Agent Readiness report. Triggers on: AI ready, agent ready, AI-first, agent readiness, isitagentready, AI Crawl Control, Markdown for Agents, text/markdown, llms.txt, GPTBot, ClaudeBot, AI crawlers, Content-Signal, ai-train, api-catalog, .well-known, oauth-protected-resource, auth.md, MCP server card, agent card, agent skills, WebMCP, a...

Adamparishspok/skills

Install a complete, lean favicon set on any website or web app — the five files modern browsers, iOS and Android actually use, one block of head markup added once in the root layout, and a check that every file resolves. Covers finding the public folder per framework, generating the set from one SVG (or from a RealFaviconGenerator package), dark-mode SVG icons, maskable manifest icons, cache busting and verification. Use when adding, replacing or auditing a favicon, app icon, apple-touch-icon or web manifest. Triggers on: favicon, favicon.ico, favicon.svg, apple-touch-icon, site.webmanifest, manifest.json, app icon, PWA icon, maskable icon, tab icon, RealFaviconGenerator.

Adamparishspok/skills

Consolidate several apps or prototypes onto one shared component library without flattening their looks. Covers finding duplicated local components (buttons, selects, fields, modals, pagers, toasts), making shared components token-sized so each suite or app sets its own measurements, mapping variant names, deciding what stays app-specific, and the tailwind-merge traps that silently break custom tokens. Use when several apps each grew their own Btn/Select/Modal, when a design system's components "don't fit" a second product, or when retheming a family of apps. Triggers on: shared component library, design system consolidation, duplicate components, retheme, suite of apps, shadcn retokened, token-driven components, cn tailwind-merge custom tokens, variant mapping.

Adamparishspok/skills

Build or migrate a UI's neutral palette (grounds, surfaces, lines, ink/text) as an OKLCH formula driven by a few inputs instead of dozens of hand-picked hex values, with light and dark themes, per-step ladder overrides, a fit script that reproduces existing colours, and a browser contrast audit. Use when creating a theme, adding dark mode, retinting a product, auditing text contrast, or consolidating several apps' palettes. Triggers on: palette, neutrals, grey ramp, dark mode, theme tokens, oklch, retint, hue, contrast audit, design tokens, Tailwind @theme colours.

Verwandte Skills