CommunityImagemgithub.com

Camadas de Movimento e Refinamento de Hover

Dê à sua interface um ritmo único e um vocabulário de micro-interações de hover e estado: camadas de duração (tap/pop/hover/card/layout) para CSS e Motion, transições de substituição, linhas cujo destaque cresce, setas de acompanhamento, pequenos deslocamentos de chevron, elevação de cartões sem translate, desvanecimento nas bordas de rolagem e trocas de ícone/rótulo para botões de cópia e alternância. Use quando as animações parecerem inconsistentes, as durações forem números mágicos espalhados, os hovers mudarem apenas a cor ou o produto parecer sem vida ou inacabado.

O que é Camadas de Movimento e Refinamento de Hover?

Esta skill fornece um sistema unificado de micro-interações para refinamento visual de interfaces de usuário, garantindo que animações e hovers funcionem como parte consistente de um mesmo produto. Ela resolve problemas comuns de polimento, como durações inconsistentes espalhadas pelo código (números mágicos), hovers que apenas mudam a cor e percepção geral de falta de sofisticação. A skill define camadas de duração (tap, pop, hover, card, layout) que criam um ritmo compartilhado, onde elementos menores se movem mais rápido. Inclui receitas práticas como destaque que cresce em linhas (hover-grow), setas que acompanham o cursor (trail), pequenos deslocamentos de chevron (nudge), elevação de cartões sem translate (lift), desvanecimento em bordas de rolagem (scroll-fade) e componentes de troca de ícone/rótulo (IconSwap e LabelSwap) para botões de menu, cópia e alternância. A implementação é fornecida para Tailwind v4 (CSS), Framer Motion e WAAPI (JavaScript), e os componentes React são adaptáveis a outros frameworks. A skill também aborda armadilhas comuns, como conflitos com animações de saída de bibliotecas (Radix), mascaramento de bordas/sombras e configuração correta de `prefers-reduced-motion`.

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

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação


name: motion-and-hover-polish description: Dê à sua interface um ritmo único e um vocabulário de micro-interações de hover e estado: camadas de duração (tap/pop/hover/card/layout) para CSS e Motion, transições de substituição, linhas cujo destaque cresce, setas de acompanhamento, pequenos deslocamentos de chevron, elevação de cartões sem translate, desvanecimento nas bordas de rolagem e trocas de ícone/rótulo para botões de cópia e alternância. Use quando as animações parecerem inconsistentes, as durações forem números mágicos espalhados, os hovers mudarem apenas a cor ou o produto parecer sem vida ou inacabado. licença: MIT

Camadas de movimento e receitas para hover

Duas ideias, comprovadas em 17 protótipos de aplicações:

  1. Durações são uma escala, não um número por componente. O olho interpreta um ritmo compartilhado como um único produto. Elementos menores se movem mais rápido.
  2. Hovers movem geometria, suavemente. Um destaque que cresce dentro da linha, uma seta que chega, um chevron que inclina na direção para onde vai, um rótulo que rola para o próximo estado. Hovers que mudam apenas a cor são lidos como uma chave sendo ligada/desligada.

Arquivos

  • references/recipes.css: Tokens @theme e receitas @utility do Tailwind v4.
  • references/timing.ts: as mesmas camadas para Motion e WAAPI.
  • references/swap.tsx: IconSwap e LabelSwap (React).

Camadas

CamadamsPara
tap100alternância de ícone, pressionamento
pop150abertura de menu, popover ou dica
hover200linha ou controle respondendo ao ponteiro
card300elevação de cartão, estabilização de lista, troca de página
layout500colapso de painel, refluxo de página
  • Entradas suavizam a saída (cubic-bezier(0.22,1,0.36,1)). Saídas suavizam a entrada e executam uma camada mais curta.
  • Quando dois elementos trocam de lugar, o que sai sai imediatamente e o que entra começa com delay-handoff (50ms) de atraso.
  • Tweens de valores (um contador, preenchimento de barra, desenho de linha de gráfico) podem executar por mais tempo: o olho está seguindo os dados.
  • Mantenha molas intencionais.

Migração: mapeie cada duração ad-hoc para a camada mais próxima.

Valor ad-hocCamada
0.12tap
0.15–0.18pop
0.2–0.24hover
0.28–0.35card
0.4–0.5layout

Espere que a temporização na tela mude em menos de 20ms em quase todos os lugares.

Receitas (uma por elemento)

  • hover-grow (linhas de navegação, linhas de link):
    • O destaque é um ::before que começa interno (3px por 6px) e transparente, depois se expande para a linha inteira enquanto aparece.
    • Também aparece para :focus-visible, data-state=open e aria-current=page.
    • Designs quadrados ou brutalistas (estilo Carbon) devem manter um destaque plano.
  • trail (linhas de link, "Navegar planos"):
    • Um glifo de acompanhamento com metade da escala e transparente até que o .group pai seja hover ou foco, crescendo a partir da borda inicial.
    • trail-out (cresce a partir do canto inferior esquerdo) mais arrow-up-right marca links que saem da aplicação.
  • nudge / nudge-back (chevrons, "Ver tudo", links de volta): um deslocamento de 2px na direção do destino.
  • lift (cartões clicáveis):
    • Uma camada de superfície mais clara e uma camada de sombra mais profunda, durante a camada card.
    • Nunca use translate: um cartão que pula sob o cursor move o elemento que está sendo mirado.
  • scroll-fade (painéis com rolagem):
    • Desvanecimento nas bordas baseado em máscara, apenas no lado que ainda pode rolar. É conduzido pela própria linha do tempo de rolagem do contêiner e não precisa de cor de fundo.
    • Navegadores não suportados simplesmente não mostram o desvanecimento.
  • IconSwap (menu para fechar, copiar para verificado, sol para lua):
    • O glifo de saída encolhe, inclina −22° e desaparece com ease-in.
    • O glifo de entrada segue após o atraso de mão.
    • Ambos permanecem montados, então a transição pode ser revertida facilmente.
  • LabelSwap ("Copiar link" para "Copiado", "Recolher" para "Expandir"):
    • Ambos os rótulos ficam em uma única célula de grade, então não há salto de largura.
    • O rótulo oculto fica invisible via transition-discrete, para que a tecnologia assistiva ouça apenas o atual.

Armadilhas

  • scroll-fade em um elemento que anima a si mesmo (menu Radix, popover ou conteúdo de select) substitui a animação de saída desse elemento. Radix espera por uma saída que nunca termina, e o menu permanece aberto. Coloque o desvanecimento em um filho com rolagem interna.
  • scroll-fade mascara bordas e sombras também. Não coloque em um cartão com borda; coloque no scroller interno.
  • Utilitários personalizados duration-* no Tailwind v4 também devem definir --tw-duration, ou uma utilidade transition-[…] no mesmo elemento vence dependendo da ordem de classificação.
  • Passos de tipo nomeados que carregam line-height (--text-meta--line-height) deslocam cada linha convertida em um pixel ao substituir tamanhos arbitrários que herdavam o leading do pai. Dê a passos intermediários nenhum line-height próprio.
  • Proteja hovers com @media (hover: hover). Mostre o mesmo estado em :focus-visible, e respeite prefers-reduced-motion (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.

Habilidades Relacionadas