Transitions e keyframes em CSS, com 20 exemplos para copiar

Playground de transitions CSS

Transitions e keyframes em CSS: 20 exemplos ao vivo | We.Inc

Ajuste duração, delay e easing com sliders, veja a curva cubic-bezier desenhada, compare transitions com @keyframes e copie 20 microinterações de hover que respeitam o movimento reduzido.

Uma transition CSS anima uma propriedade de forma suave quando o valor dela muda, por exemplo no hover: transition: transform 200ms ease-out. Ela precisa de um estado inicial e um final e roda uma vez a cada mudança. Animações com @keyframes definem os próprios passos, podem repetir e começam sem nenhuma mudança de estado. Anime transform e opacity para ter o resultado mais suave.

transition, parte por parte

O playground anima um elemento real entre dois estados com a propriedade, a duração, o delay e o easing que você escolher, e desenha o easing como uma curva para você ver por que o ease-out parece ágil e o ease-in parece arrastado. Mais abaixo há vinte efeitos de hover e foco que você pode editar ao vivo e colar em qualquer site.

Perguntas frequentes

Qual a diferença entre uma transition e uma animation?

Uma transition reage a uma mudança de valor, como uma classe adicionada ou o início de um hover, e só vai do valor antigo para o novo. Uma animation usa @keyframes, pode ter muitos passos, pode repetir ou alternar, e roda assim que é aplicada. Use transitions para mudanças de estado e keyframes para loaders e chamadas de atenção.

Por que minha transition não roda?

Causas comuns: a propriedade não é animável (display não era, até o allow-discrete), o valor inicial é auto (height: auto não pode ser interpolado sem recursos mais novos), o elemento acabou de ser inserido e não há estilo anterior, ou a transition foi declarada só no estado de hover e por isso volta de uma vez quando o mouse sai.

Quais propriedades são baratas de animar?

transform e opacity normalmente podem ser tratadas pelo compositor sem recalcular o layout nem repintar, então continuam suaves. Animar width, height, top, left ou margin força layout a cada frame, e box-shadow ou filter causam repintura, o que pode travar em celulares mais lentos.

O que significa cubic-bezier?

Descreve a curva de easing com dois pontos de controle, cubic-bezier(x1, y1, x2, y2). Os valores x são tempo e precisam ficar entre 0 e 1; os valores y são progresso e podem sair desse intervalo, o que cria um overshoot ou um pequeno quique de volta.

Como respeitar o movimento reduzido?

Use a media query @media (prefers-reduced-motion: reduce) para encurtar ou remover o movimento. Uma abordagem simples é manter as mudanças de cor e opacidade mas tirar os transforms, ou definir transition-duration e animation-duration com um valor mínimo dentro dessa query.

Como ler uma curva de easing

Transition ou @keyframes?

Animando de e para display: none

Transition vs @keyframes em um relance

Quando usar cada um

Quanto custa animar cada propriedade

Trabalho de renderização por frame (regra geral, varia por navegador)

Uma rede de segurança para movimento reduzido

Mantém as mudanças de estado mas remove o deslocamento. Coloque perto do fim da folha de estilos.

Fade de um popover na entrada e na saída com @starting-style

Uma melhoria para navegadores que suportam allow-discrete e @starting-style. Os outros mostram e escondem na hora.

20 microinterações para copiar

Passe o mouse ou dê foco em cada resultado para ver funcionando. Todo snippet termina com uma regra de movimento reduzido.

Card que sobe

Eleva um card e aprofunda a sombra.

Botão que cresce

Uma pequena escala no hover e um afundar no clique.

Sublinhado deslizante

A linha cresce a partir da esquerda usando o tamanho do background.

Preenchimento de cor

As cores de fundo e de texto trocam juntas.

Seta que avança

O ícone se move enquanto o texto fica parado.

Ícone que gira

Um mais vira um xis.

Anel de foco com fade

O deslocamento do outline é animado para quem usa teclado.

Zoom de imagem na moldura

A imagem aumenta, mas a moldura a recorta.

Legenda que aparece

A legenda desliza para cima a partir da borda inferior.

Brilho suave

Uma sombra colorida aparece com fade.

Inclinação sutil

Alguns graus de rotação deixam um adesivo com cara de solto.

Borda que se desenha

A cor da borda muda de cinza para o azul da marca.

Esmaecer os outros

Passar o mouse em um item esmaece os irmãos.

Reflexo que varre

Uma faixa de luz atravessa o elemento no hover.

Botão de switch

Um checkbox estilizado como switch com o botão deslizando.

Chevron de acordeão

O marcador gira quando um elemento details abre.

Ponto pulsante (keyframes)

Um ponto de status em loop feito com @keyframes.

Spinner (keyframes)

O timing linear mantém a rotação uniforme.

Fade para cima no carregamento (keyframes)

fill-mode both o mantém escondido durante o delay.

Tremida de erro (keyframes)

Uma tremida horizontal curta que aqui toca uma vez no hover.

Curva de easing cubic-bezier({values})

Playground de transitions

Tocar para frente

Tocar para trás

Seu dispositivo pede movimento reduzido, então a prévia pula em vez de se mover.

Propriedade para animar

Duração: {n}ms

Delay: {n}ms

Presets de easing

Copiar CSS

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site