Animações de @keyframes CSS com React
Aplique e remova animações de @keyframes dinamicamente com base no estado e nos eventos do componente.
Animações de @keyframes CSS com React é uma aula grátis de React Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.
Definindo @keyframes
Uma regra @keyframes descreve uma animação em várias etapas, nomeando valores de propriedades em pontos ao longo de uma linha do tempo, usando from/to ou porcentagens como 0%, 50%, 100%.
Ao contrário das transições, os quadros-chave podem descrever movimentos complexos em várias etapas, executados por conta própria sem uma mudança de estado a cada etapa.
A forma abreviada de animação
Você aplica um conjunto de quadros-chave com a propriedade animation: animation: slideIn 400ms ease forwards. Ela reúne o nome, a duração, a função de temporização e o modo de preenchimento.
O modo de preenchimento forwards mantém o elemento nos valores do quadro-chave final depois que a animação termina, impedindo que ele volte bruscamente ao início.
Aplicando uma classe de animação por meio do estado
No React, normalmente você adiciona uma classe que contém a declaração de animation quando o estado se torna verdadeiro. Por exemplo, adicionar is-entering inicia os quadros-chave no momento em que o elemento é montado ou um sinalizador muda.
Isso mantém a lógica da animação no CSS, enquanto o React apenas decide quando anexar a classe.
Modo de preenchimento da animação
animation-fill-mode controla quais estilos são aplicados antes e depois da execução da animação. forwards mantém o último quadro-chave, backwards aplica o primeiro quadro-chave durante qualquer atraso, e both faz as duas coisas.
Sem forwards, um elemento que anima até um estado gradualmente visível voltaria a ficar invisível quando a animação terminasse.
Direção alternada da animação
animation-direction: alternate executa a animação para a frente e depois para trás em cada repetição. Combinada com animation-iteration-count: infinite, ela cria um movimento suave de ida e volta, semelhante a um efeito pulsante ou de respiração.
Isso é útil para indicadores de carregamento ou movimentos sutis que chamam a atenção.
Pausando com o estado de reprodução da animação
animation-play-state pode ser running ou paused. Você pode controlá-la a partir do estado do React, por exemplo, pausando um letreiro ao passar o cursor ao alternar uma classe.
Como ela pausa em vez de reiniciar, a animação continua exatamente de onde parou.
Reativando ao alterar a propriedade de chave
Uma animação de quadros-chave é reproduzida apenas uma vez quando sua classe é aplicada pela primeira vez; reaplicar a mesma classe não a reinicia. A técnica mais simples no React é alterar o key do elemento para que o React monte novamente um nó novo, reproduzindo a animação desde o início.
Por exemplo, key={count} em uma notificação faz com que ela seja montada novamente toda vez que o contador é incrementado.
Respeitando a preferência por movimento reduzido
Alguns usuários ativam o movimento reduzido no sistema operacional por conforto ou acessibilidade. Envolva as animações não essenciais em @media (prefers-reduced-motion: reduce) e desative-as ou reduza sua duração nesse caso.
Respeitar essa preferência torna sua interface mais inclusiva e evita causar desconforto.
Acionando durante a rolagem com IntersectionObserver
Para animar elementos quando eles entram na janela de visualização, use um IntersectionObserver em um useEffect. Quando a entrada se torna visível, você atualiza o estado, o que adiciona a classe de animação.
Isso produz efeitos de revelação durante a rolagem sem precisar executar manipuladores pesados a cada quadro.
Orquestrando com o atraso da animação
animation-delay determina com que atraso cada animação de quadros-chave começa. Atribuir atrasos crescentes a uma lista de itens faz com que eles sejam animados em sequência, criando uma revelação coreografada.
Você pode calcular o atraso de cada item no React com style={{ animationDelay: i * 80 + 'ms' }}.
Quadros-chave versus transições
Use transições para alterações simples entre dois estados, acionadas por uma interação, e quadros-chave quando precisar de movimento em várias etapas, repetição contínua ou uma animação que seja executada independentemente de uma alternância de estado.
Ambos são CSS puro, portanto o React apenas decide quando as classes são anexadas, enquanto o navegador processa os quadros.
Verificação rápida
Teste sua compreensão sobre o comportamento dos quadros-chave.
Recapitulação
Você aprendeu a definir @keyframes, aplicá-los com a abreviação animation, controlar o modo de preenchimento e a direção, pausar e reativar animações e revelar elementos durante a rolagem com IntersectionObserver.
Você também viu como respeitar prefers-reduced-motion para oferecer movimento acessível.
Perguntas Frequentes
A aula “Animações de @keyframes CSS com React” é grátis?
Sim — o texto completo de “Animações de @keyframes CSS com React” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.
O que vou aprender em “Animações de @keyframes CSS com React”?
Aplique e remova animações de @keyframes dinamicamente com base no estado e nos eventos do componente. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar React Academy?
Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Animações de @keyframes CSS com React”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de React Academy?
Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Transições CSS com Alterações de Estado do React
- Animações de @keyframes CSS com React
- useLayoutEffect para medições antes da animação
- Animações de entrada e saída sem biblioteca