Spring sutil (Y1=1.2)
- Entrada
- Escala ou translate de elemento entrando
- Saída esperada
- transition: transform 320ms cubic-bezier(0.34, 1.2, 0.64, 1);
Overshoot suave. Funciona bem para ícones, badges e toasts.
cubic-bezier spring overshoot CSS animação elástica
Uma das capacidades menos conhecidas do `cubic-bezier()` no CSS é que os pontos de controle Y não são restritos ao intervalo [0,1]. Quando Y ultrapassa 1 ou vai abaixo de 0, a animação ultrapassa o ponto final e retorna, criando o efeito de mola (spring/bounce) sem nenhuma linha de JavaScript.
Overshoot suave. Funciona bem para ícones, badges e toasts.
Fórmula popular para drawers e menus. Personalidade sem exagero.
Overshoot mais pronunciado que o spring médio. Reserve para poucos elementos de destaque, uso excessivo cansa visualmente.
É uma função matemática que define como uma animação CSS acelera e desacelera ao longo do tempo. Os quatro parâmetros (x1, y1, x2, y2) descrevem os dois pontos de controle de uma curva cúbica de Bézier, enquanto o início (0,0) e o fim (1,1) são fixos. O formato da curva entre esses pontos é o que dá personalidade ao movimento.
Transform (scale, translate) e opacity funcionam melhor porque são composited pelo GPU. Evite spring em propriedades de layout como width, height, padding, geram reflow e o efeito fica irregular.
Não. Framer-motion usa física de mola real (massa, rigidez, amortecimento) calculada frame a frame. CSS cubic-bezier é uma aproximação conveniente. Para efeitos sofisticados com múltiplos bounces ou que dependem de velocidade, JavaScript é necessário.
Funciona melhor em transições únicas disparadas por uma ação, como abrir um modal ou confirmar uma tarefa. Em `@keyframes` que fazem loop, o overshoot repetido em cada ciclo tende a virar ruído visual, para loops contínuos, curvas sem overshoot como `ease-in-out` ou `linear` comunicam ritmo com mais clareza.
transition: transform 400ms cubic-bezier(0.4, 0, 0.2, 1);O CSS é gerado localmente no navegador.