Gerador de animação CSS

Construa visualmente animações CSS @keyframes · escolha uma predefinição ou personalize duração, transformações e curvas. Copie código pronto para produção.

Predefinições

Parâmetros

Pré-visualização

Caixa

CSS gerado

Como usar

  1. Escolha uma predefinição de animação : selecione entre as animações comuns, fade, deslizar, quique, rotação, pulsação, tremor e mais.
  2. Personalize a duração e o comportamento : ajuste duração, atraso, função de easing, número de iterações e fill mode.
  3. Copie o CSS : a definição @keyframes completa e a propriedade abreviada animation estão prontas para colar na sua folha de estilo.

Por que usar o gerador de animações CSS ?

As animações CSS dão vida às interfaces, chamando a atenção para elementos-chave, dando feedback visual e criando experiências de usuário refinadas. Escrever regras @keyframes à mão exige conhecer a sintaxe certa, os nomes de curvas e as boas combinações de propriedades. Este gerador oferece predefinições de animação cuidadas com pré-visualização em tempo real e permite ajustar cada parâmetro, produzindo CSS pronto para produção sem JavaScript nem biblioteca de animação.

Funcionalidades

Perguntas frequentes

Qual a diferença entre animation e transition em CSS ?

As transições CSS são disparadas por mudanças de estado (hover, foco, alternância de classe) e animam entre dois estados. As animações CSS usam @keyframes para definir vários estados e rodam independentemente da interação do usuário, podem fazer loop, inverter-se e iniciar automaticamente.

O que é animation-fill-mode e por que isso importa ?

O animation-fill-mode controla se o elemento conserva os estilos da animação antes que ela comece (backwards), depois que ela termina (forwards), ou ambos. Sem forwards, o elemento volta bruscamente ao seu estilo original ao final da animação.

As animações CSS têm bom desempenho ?

As animações que usam apenas transform e opacity são aceleradas pela GPU e bem fluidas. Evite animar propriedades de layout como width, height, margin ou top/left, elas disparam recálculos de layout e podem causar travamentos. Fique em transform e opacity para ter 60 fps.

O que as animações CSS realmente fazem

As animações CSS interpolam uma ou mais propriedades CSS entre quadros-chave definidos ao longo do tempo, produzindo movimento ou mudança visível sem JavaScript. O modelo tem duas peças: as regras @keyframes definem como uma animação parece em etapas baseadas em porcentagens (0% a 100%), e a propriedade abreviada animation (ou seus irmãos longhand animation-duration, animation-delay, animation-timing-function, animation-iteration-count, animation-fill-mode) diz ao navegador como reproduzir essa definição de quadros-chave. O navegador lida com toda a interpolação, suavização e tempo de quadros em C++, normalmente acelerado por GPU para mudanças de transform e opacity.

As animações diferem das transições CSS de duas maneiras. As transições disparam quando o estado de um elemento muda (um hover, uma classe alternada, um evento de focus) e interpolam entre exatamente dois valores: o antigo e o novo. As animações rodam independentemente do estado, seguem um número arbitrário de etapas de quadros-chave, podem fazer loop indefinidamente, podem reproduzir em reverso, e podem ser disparadas, pausadas e retomadas via CSS ou JavaScript. As transições são a ferramenta certa para «pular de A para B em meio segundo»; as animações são a ferramenta certa para «fazer loop deste pulso de atenção para sempre» ou «reproduzir esta sequência de entrada uma vez quando o elemento aparecer».

Para o design web moderno, as animações CSS substituem uma enorme quantidade do que costumava exigir bibliotecas JavaScript. Spinners, fade-ins, slide-ups, pulsos de atenção, checkmarks de sucesso: todos são agora padrões CSS padrão. O compromisso é a expressividade para sequências complexas. As animações CSS podem fazer muito mas deixam de ser convenientes em torno de 5 a 7 etapas de quadros-chave com mudanças de propriedades sincronizadas; para animações storyboard, sequências vinculadas a rolagem, ou qualquer coisa dinâmica que dependa do estado JavaScript, bibliotecas dedicadas (GSAP, Framer Motion, Web Animations API) continuam sendo a melhor escolha.

Como esta ferramenta funciona nos bastidores

Quando você escolhe um preset (por exemplo, «bounce» ou «fade-in») a ferramenta carrega uma string @keyframes predefinida na área de pré-visualização e aplica a propriedade de animação à caixa de pré-visualização. Os quadros-chave são CSS real, não um formato personalizado: o que você vê é o que você obtém para copiar. Os sliders atualizam os valores de tempo de animação (duração, atraso, contagem de iterações) editando a propriedade animation em linha em tempo real, então a pré-visualização reflete cada mudança instantaneamente sem recarregar a página.

A seleção da função de suavização usa os valores padrão de timing-function do CSS: linear (velocidade constante), ease (padrão, início e fim lentos), ease-in (início lento), ease-out (fim lento), ease-in-out (início e fim lentos), ou cubic-bezier(x1, y1, x2, y2) para curvas personalizadas. A curva de animação visível é calculada pela implementação nativa de timing-function do navegador; a pré-visualização é a saída realmente renderizada pelo navegador, não uma simulação JavaScript.

A caixa de código mostra o CSS completo que você precisa colocar em uma folha de estilo: tanto o bloco @keyframes quanto a declaração .sua-classe { animation: ... }. Clique em «Copiar CSS» e ambos são escritos em sua área de transferência como um único bloco de texto. Nenhum arquivo é gerado, nenhum servidor processa nada, e a ferramenta não tem backend para chamar. A pré-visualização, a geração de código e a escrita na área de transferência acontecem todas em JavaScript no seu dispositivo. Atualize a página e sua configuração personalizada se foi a menos que você a tenha copiado primeiro.

Breve história da animação web

Fluxos do mundo real

Armadilhas comuns e o que significam

Privacidade: tudo roda no seu navegador

Ferramentas geradoras de CSS vêm em dois sabores: páginas HTML simples rodando JavaScript do lado do cliente (privadas, rápidas) e editores em nuvem que salvam seus projetos (colaborativos mas com compromissos de privacidade). Esta ferramenta é do primeiro tipo. Seus valores de slider, seu preset selecionado, seu CSS gerado: tudo permanece na sua sessão do navegador. Atualize a página e o estado se vai a menos que você tenha copiado o CSS primeiro. Nenhum servidor armazena suas escolhas de animação, nenhuma análise rastreia quais presets você testou, e nenhuma conta é necessária.

A propriedade de privacidade importa principalmente para trabalho de design proprietário. Um estúdio prototipando animações para um projeto de cliente confidencial, um desenvolvedor trabalhando nas micro-interações de um aplicativo não anunciado, ou um designer iterando em uma campanha de marca: qualquer contexto onde o histórico de iteração ou o design em andamento poderia vazar informação sobre o trabalho. Com esta ferramenta, não há nada capturado porque nada é enviado. Abra a aba Rede do navegador e você verá zero solicitações de saída durante o uso; apenas o carregamento inicial da página busca o HTML e JavaScript.

Quando outra ferramenta é a escolha certa

Mais perguntas frequentes

Como faço uma animação tocar apenas uma vez?

Defina animation-iteration-count: 1 (que é o padrão se não especificado). Para fazer o elemento permanecer no estado final da animação após ela completar (em vez de voltar ao estilo original), também defina animation-fill-mode: forwards. A abreviação combinada é animation: fadeIn 0.5s ease-out forwards;.

Posso pausar e retomar uma animação?

Sim, com animation-play-state: paused (ou running). Alterne esta propriedade via JavaScript (por exemplo, em um clique de botão) ou em CSS via :hover para padrões «pausa no hover». A animação congela em seu ponto atual e retoma de lá quando definida de volta para running, sem perda de progresso. Isso funciona o mesmo em transições mas apenas a propriedade animation-play-state existe para controle de pausa em tempo de execução.

Como acionar uma animação em clique ou rolagem?

Para gatilhos de clique, alterne uma classe CSS via JavaScript: element.classList.toggle('animate-in'). A animação roda quando a classe é adicionada. Para gatilhos de rolagem, use IntersectionObserver para detectar quando o elemento entra no viewport e adicione a classe então. Para navegadores modernos, animações CSS conduzidas por rolagem permitem vincular o progresso da animação diretamente à posição de rolagem sem JavaScript via animation-timeline: scroll().

Por que minha animação pisca ou gagueja?

A maioria dos problemas de piscamento/gagueira vêm de animar propriedades que acionam layout (width, height, top/left) em vez de equivalentes baseados em transform. Mude left: 0 para transform: translateX(0) e a animação deveria suavizar. Outras causas: overdraw de muitas camadas semi-transparentes, layout thrashing por JavaScript lendo e escrevendo estilos no mesmo quadro, ou sombras e filtros excessivos no elemento animado.

Devo usar animações em interfaces críticas para acessibilidade?

Use-as, mas respeite prefers-reduced-motion. As diretrizes WCAG 2.1 recomendam fornecer a opção de desativar movimento não essencial. Envolva animações decorativas em @media (prefers-reduced-motion: no-preference) para que usuários que definem a preferência do SO obtenham uma experiência estática. Animações de feedback essenciais (indicadores de carregamento, tremores de erro) podem ser mantidas; as puramente decorativas devem ser opt-in para usuários sensíveis.

Posso usar cubic-bezier para curvas de suavização personalizadas?

Sim. A função de tempo cubic-bezier(x1, y1, x2, y2) permite definir qualquer curva de suavização com dois pontos de controle. Cada valor x está entre 0 e 1 (representando tempo), valores y podem ser negativos ou maiores que 1 (permitindo efeitos de overshoot e ressalto). Use nossa ferramenta Cubic Bezier ou o clássico cubic-bezier.com de Lea Verou para escolher uma curva visualmente. Alternativas comuns de preset: ease, ease-in, ease-out, ease-in-out, e a variável CSS com alias linear cubic-bezier(0.25, 0.1, 0.25, 1) (ease padrão).

Ferramentas relacionadas

Gerador de gradiente CSS Gerador de bézier cúbico CSS Carregador de CSS / Gerador de Spinner Gerador de CSS Flexbox