1001Ferramentas
〰️ Dev

Gerador Cubic Bezier

Crie e visualize curvas cubic-bezier para animações CSS. Arraste os pontos de controle, veja o preview da animação e copie o valor pronto. Inclui presets (ease, ease-in, ease-out). Tudo no navegador.

0 1 0 1

O que é?

cubic-bezier(x1, y1, x2, y2) define uma curva de aceleração para transitions e animations CSS. Os dois pontos de controle (P1 e P2) ajustam o ritmo da animação: valores baixos no Y inicial fazem o movimento começar lento; valores altos fazem começar rápido.

Os valores de Y podem ultrapassar [0, 1] para criar efeitos de overshoot (animação que ultrapassa o destino e volta) — útil para botões e elementos com personalidade. Tudo no navegador.

Ajuste a curva vendo a animação rodar

Animação CSS com o ease padrão costuma ficar sem personalidade, e acertar os quatro números de um cubic-bezier na mão vira tentativa e erro: muda um decimal, recarrega, ainda não era isso. Aqui você arrasta os dois pontos de controle direto no gráfico, aperta Reproduzir para ver a bolinha percorrer o trajeto na duração que definir e copia o valor já formatado para transition-timing-function e animation-timing-function.

No gráfico, o eixo X é o tempo e o Y é o progresso da animação. Há uma regra que o gerador aplica sozinho: X1 e X2 ficam travados entre 0 e 1, porque fora disso a curva deixa de ser uma função válida do tempo e o navegador descarta o valor inteiro. Já Y1 e Y2 podem ultrapassar esses limites de propósito: é assim que nasce o overshoot, o efeito de passar do destino e voltar. O preset back usa cubic-bezier(0.68, -0.55, 0.27, 1.55) exatamente por isso.

Parta de um preset e mexa pouco: diferenças de 0.05 já mudam a sensação do movimento. Teste com a duração real do seu projeto, porque uma curva que parece ótima em 1500 ms pode ficar brusca em 300 ms; o campo aceita de 200 a 5000 ms. E lembre que overshoot só aparece em propriedades que aceitam passar do valor final, como transform: em opacity o navegador corta em 0 e 1. A página roda inteira no seu navegador, nada é enviado a servidor.

Perguntas frequentes

Por que não consigo arrastar o ponto para fora da lateral do gráfico?
Os valores de X ficam limitados entre 0 e 1 porque representam o tempo; um X fora dessa faixa tornaria o cubic-bezier inválido e o navegador cairia no ease padrão. Só o Y pode sair da caixa, para cima ou para baixo.
Qual a vantagem sobre usar o ease-in-out pronto?
Os nomes prontos são apenas curvas fixas: ease-in-out, por exemplo, equivale a cubic-bezier(0.42, 0, 0.58, 1). Criando a sua, você controla o quanto a animação acelera, freia ou ultrapassa o destino.
O valor copiado serve para animation ou só para transition?
Para os dois. A saída já vem com as duas linhas, transition-timing-function e animation-timing-function, com o mesmo cubic-bezier; use a que fizer sentido no seu caso e apague a outra.

Ferramentas Relacionadas