Animações CSS Modernas: Scroll-Driven, Spring e Além
As animações já não são apenas ornamentos "agradáveis de ter". São ferramentas essenciais para fornecer feedback, guiar a atenção do utilizador e criar uma experiência de marca memorável.
O CSS moderno introduziu formas revolucionárias de animar elementos que anteriormente exigiam listeners de scroll complexos em JavaScript ou bibliotecas de animação pesadas.
1. Animações Scroll-Driven: Sem JS Necessário
A adição mais excitante às animações CSS é a especificação Scroll-Driven Animation. Ela permite ligar o progresso de uma animação diretamente à posição de scroll de um contentor.
Como funciona:
Anteriormente, precisava de window.onscroll e requestAnimationFrame. Agora, só precisa de scroll-timeline.
@keyframes progress-bar {
from { width: 0%; }
to { width: 100%; }
}
.progress-indicator {
animation: progress-bar linear;
animation-timeline: scroll(); /* Ligar ao scroll da página! */
}
Casos de Uso Principais:
- Barras de Progresso de Leitura: Mostra o quanto o utilizador já percorreu na página.
- Efeitos Parallax: Move elementos de fundo a diferentes velocidades relativas ao scroll.
- Revelar no Scroll: Faz o fade-in de elementos à medida que entram na viewport usando
view-timeline.
2. Keyframes Avançados e Composição
O CSS moderno permite um controlo mais granular sobre como as animações são combinadas.
animation-composition: Define como múltiplas animações que afetam a mesma propriedade devem misturar-se (ex:replace,add, ouaccumulate).animation-range: Ajusta precisamente quando uma animação scroll-driven começa e termina dentro da viewport.
.card {
animation: fade-in linear;
animation-timeline: view();
/* Animado apenas enquanto o elemento está nos 50% centrais do ecrã */
animation-range: entry 25% exit 75%;
}
3. Além do Linear: Cubic-Bezier e Física de Molas (Spring)
As funções de timing definem o "sentimento" de uma animação. Embora o ease-in-out seja o padrão, designs avançados usam curvas personalizadas.
Cubic-Bezier
Uma função cubic-bezier permite criar efeitos de "salto" ou "antecipação".
.button:active {
/* Um ligeiro efeito de ressalto */
transition: transform 0.3s cubic-bezier(0.68, -0.6, 0.32, 1.6);
}
Animações de Mola CSS (Experimental)
Embora ainda não seja totalmente nativo em todos os browsers, o conceito de Física de Molas (Spring Physics) (massa, rigidez, amortecimento) está a chegar ao CSS. Isto cria um movimento muito mais natural e orgânico do que o timing tradicional baseado em duração.
4. Performance: A Regra dos 60FPS
A chave para animações fluidas é manter-se fora da "Main Thread". As animações CSS modernas são altamente otimizadas, mas apenas se animar as propriedades corretas.
Seguro para animar:
transform(scale, rotate, translate)opacityfilter(em alguns browsers)
Evite animar (causa saltos de layout):
width/heightmargin/paddingtop/left/bottom/right
5. View Transitions: Animando a Mudança do DOM
Combinado com a View Transition API, o CSS pode agora lidar com o "morphing" de elementos entre dois estados, criando uma experiência fluida semelhante a uma aplicação nativa.
::view-transition-old(root),
::view-transition-new(root) {
animation-duration: 0.5s;
}
FAQ: Perguntas Frequentes
P: As Animações Scroll-Driven já são suportadas?
R: A partir de 2024, são suportadas no Chrome e Edge. Firefox e Safari têm-nas em desenvolvimento. Pode usá-las hoje como uma "melhoria progressiva" — o site continua a funcionar sem elas, mas fica melhor com elas.
P: Porque é que a minha animação está a soluçar?
R: Certifique-se de que está apenas a animar transform e opacity. Verifique se tem demasiados efeitos de backdrop-filter ativos, pois podem ser pesados para a performance.
P: Posso usar @scroll-timeline?
R: A sintaxis antiga @scroll-timeline foi substituída pelas funções mais concisas animation-timeline: scroll() e view(). Recomendamos o uso da sintaxe mais recente para estar preparado para o futuro.
Dê Vida ao seu Site
As animações são a "alma" de um interface de utilizador moderno. Ao dominar timelines scroll-driven e funções de timing avançadas, pode criar experiências profissionais e envolventes que fazem os utilizadores voltar.
Pronto para aperfeiçoar o seu timing? Experimente o nosso Gerador de Cubic-Bezier (brevemente) ou use as nossas ferramentas de animação existentes.