Back

Adicionando Animações com Plugins do Tailwind CSS

Adicionando Animações com Plugins do Tailwind CSS

Você construiu uma interface limpa com Tailwind, mas ela parece estática. Adicionar movimento deveria ser simples—até você se encontrar olhando para um tailwind.config.js em branco, questionando se precisa de um plugin, um keyframe ou algo completamente diferente. Aqui está um mapa claro das suas opções.

Principais Conclusões

  • O Tailwind vem com quatro utilitários de animação integrados (animate-spin, animate-ping, animate-pulse, animate-bounce) que cobrem loaders, skeletons, badges e indicações básicas de atenção.
  • Para animações de entrada/saída, slides direcionais e revelações acionadas por scroll, plugins como tailwindcss-animate e tailwind-animations preenchem as lacunas sem CSS customizado.
  • O Tailwind CSS v4 permite definir animações customizadas diretamente no CSS usando @theme, frequentemente eliminando a necessidade de um plugin.
  • Sempre envolva animações não essenciais com motion-safe: para respeitar usuários que preferem movimento reduzido.

O Que o Tailwind Oferece Nativamente

O Tailwind vem com quatro utilitários de animação que cobrem um número surpreendente de casos de uso reais:

  • animate-spin — loaders e ícones rotativos
  • animate-ping — badges de notificação e efeitos de radar
  • animate-pulse — telas de carregamento skeleton
  • animate-bounce — indicadores de scroll e sinais de atenção

Para feedback simples de estado—um spinner de carregamento em um botão de envio, um skeleton pulsante enquanto os dados são carregados—essas animações integradas do Tailwind CSS são frequentemente tudo o que você precisa. Combine-as com utilitários de transição (transition, duration-300, ease-in-out) para estados de hover e focus, e você pode cobrir a maioria das micro-interações sem tocar em um plugin. Você pode explorar todos esses utilitários na documentação oficial de animações do Tailwind.

Quando os utilitários nativos são suficientes: loaders, skeletons, badges e transições básicas de hover.

Quando Recorrer a um Plugin de Animação do Tailwind

O conjunto nativo tem limites. Ele não inclui animações de entrada/saída, slides direcionais, flips ou revelações acionadas por scroll. É aí que os plugins de animação do Tailwind ganham seu espaço.

tailwindcss-animate

tailwindcss-animate adiciona utilitários compostos de entrada e saída:

<!-- Fade e zoom in na montagem -->
<div class="animate-in fade-in zoom-in duration-300">...</div>

<!-- Slide out para o topo ao dispensar -->
<div class="animate-out slide-out-to-top fade-out duration-200">...</div>

Ele também expõe controles refinados—delay-150, repeat-infinite, fill-mode-forwards, direction-alternate—que permitem ajustar animações sem escrever CSS customizado.

No entanto, o plugin não teve um novo lançamento desde 2023, então a compatibilidade com versões mais recentes do Tailwind pode variar dependendo da sua configuração. Alguns stacks modernos do Tailwind v4 usam pacotes de animação mais novos projetados em torno da arquitetura CSS-first do framework.

tailwind-animations

tailwind-animations adota uma abordagem diferente: uma grande biblioteca de animações nomeadas (animate-fade-in, animate-shake, animate-heartbeat, animate-jelly, e muitas outras).

<div class="animate-fade-in">
  Caixa com fade in
</div>

O plugin também suporta utilitários de animação baseados em scroll usando a propriedade CSS animation-timeline.

<!-- Revelar no scroll usando CSS View Timeline -->
<div class="timeline-view animate-fade-in-up animate-range-gradual">...</div>

Essas animações acionadas por scroll dependem de recursos mais recentes do navegador, como animation-timeline, então o suporte do navegador pode variar dependendo do seu público-alvo.

Tailwind CSS v4 e a Abordagem CSS-First

Se você está no Tailwind CSS v4, a maneira recomendada de adicionar animações customizadas é diretamente no seu CSS usando @theme:

@theme {
  --animate-wiggle: wiggle 1s ease-in-out infinite;

  @keyframes wiggle {
    0%, 100% { transform: rotate(-3deg) }
    50% { transform: rotate(3deg) }
  }
}

Isso torna animate-wiggle disponível como uma classe utilitária imediatamente—sem necessidade de plugin. Para animações customizadas pontuais, isso é frequentemente mais limpo do que instalar uma dependência.

Nota de compatibilidade: Alguns plugins foram construídos para o Tailwind v3 e podem não suportar totalmente a arquitetura CSS-first do v4. Sempre verifique o repositório ou documentação de um plugin antes de adicioná-lo a um projeto v4.

Não Esqueça a Acessibilidade

Envolva qualquer animação não essencial em motion-safe: para que usuários que preferem movimento reduzido não sejam afetados:

<svg class="motion-safe:animate-spin ...">...</svg>

A variante motion-reduce: do Tailwind funciona de forma oposta—aplicando estilos apenas quando movimento reduzido é preferido. Use ambas para dar a cada usuário uma experiência confortável.

Escolhendo Sua Abordagem

NecessidadeSolução
Loader, skeleton, badgeUtilitários animate-* nativos
Entrada/saída, modal, toasttailwindcss-animate
Animações nomeadas ricas, revelações por scrolltailwind-animations
Animação customizada pontual@theme no CSS (v4) ou theme.extend.keyframes (v3)

Conclusão

Comece com o que o Tailwind já oferece. Os quatro utilitários de animação nativos e as classes de transição lidam com a maioria das micro-interações do dia a dia. Quando você precisar de sequências de entrada/saída, slides direcionais ou revelações acionadas por scroll, um plugin como tailwindcss-animate ou tailwind-animations pode se encaixar perfeitamente. Se você está no v4, tente definir tokens de animação customizados no CSS antes de recorrer a um pacote. Qualquer que seja o caminho escolhido, lembre-se de respeitar a media query prefers-reduced-motion para que cada usuário tenha uma experiência confortável.

Perguntas Frequentes

O plugin foi originalmente construído para o Tailwind v3 e não teve um novo lançamento desde 2023. A compatibilidade com o Tailwind v4 depende da configuração do projeto, então verifique o repositório do plugin antes de usá-lo em um projeto v4. Muitas de suas animações também podem ser recriadas diretamente usando a diretiva @theme do v4.

No Tailwind v4, defina um token de animação customizado dentro de um bloco @theme no seu arquivo CSS usando uma variável --animate- e uma regra @keyframes correspondente. No v3, estenda theme.extend.keyframes e theme.extend.animation no seu tailwind.config.js. Ambas as abordagens tornam a animação disponível como uma classe utilitária padrão.

Utilitários de transição como transition, duration e ease controlam mudanças de propriedade entre dois estados, como hover ou focus. Utilitários de animação como animate-spin executam sequências baseadas em keyframes que podem repetir, reverter ou executar uma vez. Use transições para mudanças simples de estado e animações para movimento contínuo ou de múltiplas etapas.

Animações baseadas em CSS no Tailwind são geralmente performáticas porque são executadas na thread do compositor ao animar transform e opacity. Evite animar propriedades de layout como width ou height. Animações acionadas por scroll usando o recurso CSS animation-timeline também podem ser eficientes, mas o suporte do navegador deve ser verificado antes de depender delas em produção.

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay