Editor de cubic-bezier
Desenha curvas de easing CSS num editor cubic-bezier com pegas arrastáveis, compara-as com linear numa animação e copia cubic-bezier() ou linear().
Arrasta as duas pegas (P1 e P2). O tempo corre da esquerda para a direita e o progresso de baixo para cima; as pegas podem ir acima de 1 ou abaixo de 0 para um efeito de ressalto. Com uma pega selecionada, usa as setas do teclado (Shift para 0,1).
Pré-visualização da animação
A animação está em pausa porque o teu sistema pede movimento reduzido. Carrega em Reproduzir para a executar na mesma.
A mesma curva amostrada como easing CSS linear() (Chrome 113+, Firefox 112+, Safari 17.2+). Mais pontos seguem a curva com mais precisão.
Como usar o editor de cubic-bezier
- Arrasta as duas pegas no gráfico. P1 (o primeiro ponto de controlo) molda o início do movimento e P2 o fim. O tempo corre da esquerda para a direita e o progresso de baixo para cima.
- Ou escreve um valor em Valor cubic-bezier(): um
cubic-bezier(0.4, 0, 0.2, 1)completo, quatro números ou uma palavra-chave comoease-in-out. Os campos x1, y1, x2 e y2 editam uma coordenada de cada vez. - Parte do menu Predefinições (palavras-chave CSS, as famílias de Sine a Back e as curvas do Material Design) ou dos botões de palavras-chave. Quando a tua curva coincide com uma predefinição, o nome aparece ao lado dos botões.
- Observa a Pré-visualização da animação: o ponto de A tua curva e o ponto de linear percorrem a mesma distância na mesma Duração. Usa Pausa/Reproduzir e Recomeçar para os comparar.
- Copia o resultado em Função de temporização CSS, ou copia a Aproximação linear() e escolhe o seu número de Segmentos.
Teclado: seleciona uma pega e usa as setas para a mover 0,01, ou 0,1 com Shift.
Se o teu sistema estiver configurado para reduzir o movimento, a animação começa em pausa. Carrega em Reproduzir se a quiseres ver na mesma.
O que significa cubic-bezier()
Uma função de easing CSS faz corresponder o tempo decorrido de uma transição (0 a 1) ao seu progresso (0 a 1). cubic-bezier(x1, y1, x2, y2) descreve esta correspondência com uma curva de Bézier cúbica que começa em (0, 0), termina em (1, 1) e é puxada por dois pontos de controlo, P1 = (x1, y1) e P2 = (x2, y2).
- Os valores x são tempos e têm de ficar entre 0 e 1; caso contrário, a função não seria uma curva de temporização válida. O editor mantém-nos dentro desse intervalo.
- Os valores y são progresso e podem ir abaixo de 0 ou acima de 1. Um y acima de 1 faz a animação ultrapassar o destino e voltar atrás, como as curvas Back; abaixo de 0, começa por andar para trás.
- Uma inclinação acentuada significa movimento rápido, uma inclinação suave movimento lento.
ease-outcomeça rápido e acaba devagar, o que parece natural para elementos que entram no ecrã.ease-infaz o contrário e adequa-se a elementos que saem.
As palavras-chave CSS são atalhos: ease = cubic-bezier(0.25, 0.1, 0.25, 1), ease-in = (0.42, 0, 1, 1), ease-out = (0, 0, 0.58, 1), ease-in-out = (0.42, 0, 0.58, 1) e linear = (0, 0, 1, 1).
A aproximação linear()
A função mais recente linear() enumera valores de progresso em tempos igualmente espaçados, por exemplo linear(0, 0.25, 0.5, 0.75, 1), e une-os com segmentos de reta. A ferramenta amostra a tua curva (resolve a Bézier para cada passo de tempo) e escreve esses valores com três casas decimais. Com 20 a 40 segmentos, o resultado é visualmente idêntico à curva. A verdadeira vantagem de linear() está nas curvas que uma Bézier não consegue desenhar, como ressaltos e molas, mas também te permite usar uma única sintaxe. Funciona no Chrome e no Edge 113+, no Firefox 112+ e no Safari 17.2+, por isso mantém o valor cubic-bezier() como alternativa.
Perguntas frequentes
Onde uso o valor?
Em transition-timing-function, animation-timing-function ou na forma abreviada: transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);. A Web Animations API aceita-o como easing.
Que durações são adequadas?
Pequenas alterações de interface duram normalmente 150 a 300 ms; grandes movimentos pelo ecrã, 300 a 500 ms. Animações mais longas parecem lentas muito depressa.
Porque é que não consigo arrastar uma pega para lá da margem esquerda ou direita?
Porque x é tempo, e o tempo não pode andar para trás: o CSS rejeita valores de x fora do intervalo 0–1.
Que curvas usa o Material Design?
A curva standard clássica é cubic-bezier(0.4, 0, 0.2, 1), com as variantes decelerate, accelerate e sharp. O Material 3 acrescenta as curvas emphasized; estão todas no menu Predefinições.
Como devo lidar com o movimento reduzido?
Respeita @media (prefers-reduced-motion: reduce) no teu CSS: encurta ou elimina os movimentos grandes e mantém transições de opacidade simples.
Ferramentas relacionadas
- Gerador de box-shadow Cria sombras CSS box-shadow em camadas com pré-visualização ao vivo. Ajusta deslocamento, desfoque, expansão, cor, opacidade e inset e copia o código.
- Gerador de Flexbox e Grid CSS Cria layouts flexbox e CSS grid de forma visual. Define propriedades do contentor e dos itens, dá nomes às áreas e copia CSS e HTML limpos.
- Gerador de gradientes CSS Cria gradientes CSS lineares, radiais e cónicos com pré-visualização ao vivo. Adiciona e arrasta paragens de cor, define o ângulo e copia o código CSS.