O Básico da Manipulação DOM que Precisas de Saber
Aprende a selecionar elementos, modificar conteúdo e alterar estilos. Estes três conceitos são a base de qualquer interatividade.
Ler ArtigoTransform, opacity, transitions — sem bibliotecas. Descobre como criar movimento elegante que não sobrecarrega o navegador.
As animações não são apenas bonitas — quando feitas bem, melhoram a experiência do utilizador. Um botão que responde ao clique, um menu que desliza suavemente, um elemento que se destaca quando scrollas — estas pequenas mudanças fazem os sites sentirem-se vivos.
Mas aqui está a verdade: não precisas de jQuery, GSAP ou qualquer biblioteca pesada. O JavaScript puro consegue fazer praticamente tudo isto. E melhor ainda — é mais rápido, mais leve, e tens controlo total sobre o código.
Há três formas principais de animar elementos com JavaScript puro: CSS transitions, CSS transforms, e manipulação direta de propriedades. Cada uma tem o seu lugar.
A forma mais simples. Defines a transição no CSS — duração, timing, propriedade — e depois muda a propriedade com JavaScript. O navegador anima automaticamente. Sem código extra, sem cálculos.
Para mover, rodar ou escalar elementos. Transforms são incríveis porque não afetam o fluxo do documento. Um elemento pode descer 200px sem mexer em nada à volta dele.
Quando precisas de controlo fino. Permite atualizar o ecrã a cada frame, sincronizado com o refresh rate do monitor (geralmente 60fps). Mais complexo, mas infinitamente mais poderoso.
Imagina um botão. Quando clicas nele, muda de cor, expande ligeiramente, e volta ao normal. Isto acontece em 300 milissegundos. É um detalhe pequeno mas faz diferença.
Consegues isto com CSS transitions. Defines na folha de estilos que qualquer mudança de background-color ou transform demora 0.3 segundos. Depois no JavaScript, quando o utilizador clica, muda o estado da classe. Pronto. A animação acontece automaticamente.
Este tipo de animação é rápida, leve, e funciona em todos os navegadores. Não há lag, não há saltos estranhos. Só movimento suave.
Scroll na página, um elemento aparece. Desliza de baixo para cima enquanto fica mais visível. Isto é fade-in combinado com transform translate.
Podes fazer isto com Intersection Observer — uma API moderna que detecta quando um elemento entra na viewport. Quando entra, aplicas uma classe que ativa a animação. Nada complicado, e funciona em todos os browsers modernos.
A vantagem? Os elementos começam com opacity: 0 e transform: translateY(30px). Quando o utilizador faz scroll, mudam para opacity: 1 e translateY(0). A transição CSS cuida de toda a animação.
Aqui está o segredo que muita gente não sabe: nem todas as animações são iguais. Algumas destroem o desempenho do site. Outras são quase invisíveis em termos de impacto.
Estas duas propriedades são otimizadas no navegador. Podem animar sem desencadear layout recalculations. Resultado: 60fps consistente.
Mudar width ou height força o navegador a recalcular o layout inteiro. Isto é pesado. Se precisas de crescimento, usa transform: scale() em vez disso.
Se usas setTimeout ou setInterval para animações, estás a fazer errado. requestAnimationFrame sincroniza-se com o refresh rate do ecrã — 60 ou 120 fps consoante o dispositivo.
Uma animação suave no teu laptop pode ser um slideshow num telemóvel antigo. Testa em múltiplos dispositivos, especialmente em Android e iOS mais antigos.
Alguns utilizadores têm prefers-reduced-motion ativado. Respeita isto. Se eles não querem animações, não animes. É uma questão de acessibilidade.
Uma função dedicada para cada animação. Sem spaghetti code espalhado por todo o lado. Isto facilita debugging e reutilização.
DevTools do navegador mostra-te tudo. FPS, CPU, GPU. Se uma animação está a causar problemas, vês logo onde. Não adivinhes — testa.
“A melhor animação é aquela que o utilizador nem nota. Se o site sente-se responsivo e vivo, mas sem nada que distraia, conseguiste o equilíbrio perfeito.”
— Princípio de Design de Interação
Não precisas de ser um especialista em animações para melhorar os teus sites. Começa com CSS transitions. Depois experimenta com transforms. Quando estiveres confortável, explora requestAnimationFrame.
Cada técnica que aprendes abre novas possibilidades. E o melhor? Tudo isto é nativo do JavaScript — sem dependências, sem bibliotecas, apenas tu e o navegador.
Descobre as bases da manipulação DOM, que é essencial para qualquer animação.
Ler Guia de DOMEste artigo é informativo e educacional. O objetivo é ajudar-te a compreender as técnicas de animação com JavaScript vanilla. As melhores práticas e exemplos apresentados baseiam-se em padrões consolidados da indústria, mas cada projeto é único. Sempre testa o código no teu ambiente específico antes de implementar em produção. O desempenho pode variar consoante o navegador, dispositivo e configurações do utilizador.