Veja o post original devaradise.com/javascript-react-animation-l.. para uma melhor navegação com a Tabela de Conteúdo.
As animações podem levar seus aplicativos da Web de bons a ótimos, tornando-os mais envolventes e interativos. Elas fornecem feedback visual, guiam os usuários através da interface e adicionam um toque de personalidade aos seus projetos.
Existem muitas bibliotecas de animação, desde bibliotecas simples baseadas em CSS até poderosas bibliotecas JavaScript capazes de criar animações complexas. Neste artigo, estamos mergulhando nas 15 principais bibliotecas de animação para React e aplicativos da web modernos.
Desde o conhecido React Spring e Framer Motion até bibliotecas especializadas como Vivus e Three.js, você encontrará algo aqui para fazer seus projetos da web brilharem. Vamos explorar essas bibliotecas e ver como elas podem transformar a experiência do usuário do seu site!
Bibliotecas de animação para casos de uso geral
1. Animate.css – Animação CSS
Animate.css é uma popular biblioteca CSS que fornece uma ampla gama de animações predefinidas, tornando fácil aplicar animações a qualquer projeto web. Com mais de 80.2k estrelas no GitHub e milhões de downloads no npm, Animate.css é uma opção de primeira escolha para animações rápidas e simples.
Instalação e Uso Básico
npm install animate.css
import 'animate.css';
<div class="animate__animated animate__bounce">An animated element</div>
Melhor Caso de Uso
Animate.css é melhor adaptado para animações simples que precisam ser implementadas rapidamente sem a necessidade de JavaScript.
Pros
Fácil de usar, leve, grande variedade de animações.
Cons
Limitado a animações CSS, menor controle sobre o comportamento das animações.
2. React Spring
React Spring é uma popular biblioteca de animação para React, fornecendo uma maneira poderosa e flexível para criar animações com base na física de molas. Tem mais de 27.8k estrelas no GitHub e é amplamente usado na comunidade.
Instalação e Uso Básico
npm install @react-spring/web
import React from 'react';
import { useSpring, animated } from '@react-spring/web';
const App = () => {
const springs = useSpring({
from: { x: 0 },
to: { x: 100 }
});
return (
<animated.div
style={{
width: 80,
height: 80,
background: '#ff6d6d',
borderRadius: 8
}}
/>
);
};
export default App;
Melhor Caso de Uso
Criar animações complexas com controle fino nas transições e interações.
Pros
Muito flexível, suporta animações avançadas, boa支助社区.
Cons
O aprendizado pode ser acentuado para os iniciantes.
3. Framer Motion
Framer Motion é uma poderosa biblioteca de animações conhecida por sua facilidade de uso e recursos abrangentes. Tem mais de 22.8k estrelas no GitHub e é altamente elogiada por sua API intuitiva.
Instalação e Uso Básico
npm install framer-motion
import React from 'react';
import { motion } from 'framer-motion';
const App = () => {
return (
<motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} transition={{ duration: 1 }}>
Hello, Framer Motion!
</motion.div>
);
};
export default App;
Melhor Caso de Uso
Criar animações suaves e visualmente atraentes com pouco código.
Pros
API intuitiva, suporta animações de quadro-chave, ótima documentação.
Contras
Tamanho de pacote ligeiramente maior em comparação com outras bibliotecas.
4. Anime.js
Anime.js é uma biblioteca de animação em JavaScript leve com uma API poderosa. Tem mais de 49.2k estrelas no GitHub e é amplamente usada para criar animações complexas e altamente personalizáveis.
Instalação e Uso Básico
npm install animejs
import anime from 'animejs/lib/anime.es.js';
anime({
targets: 'div',
translateX: 250,
rotate: '1turn',
duration: 800
});
Melhor Caso de Uso
Criar animações complexas e detalhadas com controle preciso.
Pros
Leve, versátil, altamente personalizável.
Contras
Requer conhecimento em JavaScript, pode ser complexo para animações simples.
5. GSAP (Plataforma de Animação GreenSock)
GSAP é uma poderosa biblioteca de animação em JavaScript conhecida por sua alta performance e por um conjunto de recursos abrangente. Tem mais de 19.2k estrelas no GitHub e é amplamente usada em aplicações web e mobile.
Instalação e Uso Básico
npm install gsap
import { gsap } from 'gsap';
gsap.to('.box', { rotation: 27, x: 100, duration: 1 });
Melhor Caso de Uso
Animações de alto desempenho e sequências complexas.
Vantagens
Extremamente poderosa, robusta, alta performance.
Desvantagens
Tamanho de pacote maior, requer tempo de aprendizado.
6. Popmotion
Popmotion é uma biblioteca de animação em JavaScript funcional e flexível. Ela fornece as animações no Framer Motion. Tem mais de 19.9k estrelas no GitHub e oferece uma série de ferramentas para criar animações e interações.
Instalação e Uso Básico
npm install popmotion
import { animate } from 'popmotion';
animate({
from: 0,
to: 100,
onUpdate: (latest) => {
console.log(latest);
}
});
Melhor Caso de Uso
Criar interações de nível baixo, complexas e animações altamente personalizáveis.
Vantagens
API funcional, flexível, escalável e pacote pequeno.
Desvantagens
Pode ser complexo para casos de uso simples.
7. Mo.js
Mo.js é uma ferramenta de animação gráfica para a web. Tem mais de 18,3k estrelas no GitHub e oferece uma variedade de ferramentas para criar animações.
Instalação e Uso Básico
npm install @mojs/core
import { Mojs } from '@mojs/core';
const bouncyCircle = new mojs.Shape({
parent: '#bouncyCircle',
shape: 'circle',
fill: { '#F64040': '#FC46AD' },
radius: { 20: 80 },
duration: 2000,
isYoyo: true,
isShowStart: true,
easing: 'elastic.inout',
repeat: 1
});
bouncyCircle.play();
Melhor Caso de Uso
Criar animações e gráficos de movimento complexos.
Pros
Versátil, poderoso, ótimo para gráficos de movimento.
Cons
Curva de aprendizagem mais pronfunda, tamanho de pacote maior.
Bibliotecas de Animação para Casos de Uso Específicos
8. Remotion – Gera Vídeo de Animação com React
Remotion permite que você crie vídeos de forma programática usando React. É uma biblioteca única com mais de 19,6k estrelas no GitHub, permitindo que desenvolvedores usem o poder do React para criar conteúdo de vídeo.
Instalação e Uso Básico
# new project
npx create-video@latest
# install to existing project
npm i --save-exact [email protected] @remotion/[email protected]
export const MyComposition = () => {
return null;
};
import React from 'react';
import {Composition} from 'remotion';
import {MyComposition} from './Composition';
export const RemotionRoot: React.FC = () => {
return (
<>
<Composition
id="Empty"
component={MyComposition}
durationInFrames={60}
fps={30}
width={1280}
height={720}
/>
</>
);
};
import { registerRoot } from 'remotion';
import { RemotionRoot } from './Root';
registerRoot(RemotionRoot);
Melhor Caso de Uso
Geração de vídeos de forma programática usando React.
Pros
Funcionalidade única, aproveita as habilidades do React, capacidades poderosas de criação de vídeo.
Cons
Caso de uso específico, pode ser complexo para iniciantes.
9. Vivus – Animação de Desenho SVG
Vivus é uma biblioteca JavaScript leve para animar SVGs. Com mais de 15.1k estrelas no GitHub, é uma ótima escolha para criar animações SVG.
Instalação e Uso Básico
npm install vivus
import Vivus from 'vivus';
new Vivus(
'my-svg',
{
type: 'delayed',
duration: 200,
animTimingFunction: Vivus.EASE
},
myCallback
);
// svg
<object id='my-svg' type='image/svg+xml' data='link/to/my.svg'></object>;
Melhor Caso de Uso
Criar animações de desenho para SVGs.
Pros
Leve, especializado em SVGs, fácil de usar.
Cons
Limitado a SVGs, não adequado para outros tipos de animações.
10. Lottie for Web – Render After Effects Animations
Lottie é uma biblioteca para renderizar animações criadas no Adobe After Effects. Com mais de 29.9k estrelas no GitHub, ela é amplamente usada para integrar animações complexas.
Instalação e Uso Básico
npm install lottie-web
import lottie from 'lottie-web';
import animationData from './animation.json';
lottie.loadAnimation({
container: document.getElementById('animation'),
renderer: 'svg',
loop: true,
autoplay: true,
animationData: animationData
});
Melhor Caso de Uso
Integrar animações criadas no After Effects.
Pros
Amostras de animação de alta qualidade, integra-se bem com o After Effects.
Cons
Requer o After Effects para a criação de animações, arquivos maiores.
11. ScrollReveal
ScrollReveal é uma biblioteca JavaScript para animar elementos com facilidade conforme entram ou saem da visualização. Com mais de 22.2k estrelas no GitHub, ela é perfeita para animações baseadas em rolagem.
Instalação e Uso Básico
npm install scrollreveal
import ScrollReveal from 'scrollreveal';
ScrollReveal().reveal('.box', { delay: 500 });
<h1 class="headline">Widget Inc.</h1>
Melhor Cenário de Uso
Adicionar animações de revelação baseadas em rolagem.
Vantagens
Fácil de usar, leve, ótimo para animações de rolagem
Desvantagens
Limitado a animações baseadas em rolagem.
12. ScrollMagic
ScrollMagic é uma biblioteca para criar interações e animações baseadas em rolagem. Com mais de 14.8k estrelas no GitHub, oferece uma maneira robusta para gerenciar animações baseadas em rolagem.
Instalação e Uso Básico
npm install scrollmagic
import ScrollMagic from 'scrollmagic';
const controller = new ScrollMagic.Controller();
var controller = new ScrollMagic.Controller();
// create a scene
new ScrollMagic.Scene({
duration: 100, // the scene should last for a scroll distance of 100px
offset: 50 // start this scene after scrolling for 50px
})
.setPin('#my-sticky-element') // pins the element for the the scene's duration
.addTo(controller); // assign the scene to the controller
Melhor Cenário de Uso
Criar interações complexas de rolagem e animações.
Vantagens
Potente, flexível, integra bem com GSAP.
Desvantagens
Pode ser complexo para animações simples, tamanho de pacote maior.
13. Typed.js
Typed.js é uma biblioteca de JavaScript que digita texto, fazendo com que pareça que está sendo digitado por uma pessoa. Com mais de 15,1k estrelas no GitHub, é ótimo para adicionar animações de digitação.
Instalação e Uso Básico
npm install typed.js
import Typed from 'typed.js';
const typed = new Typed('#element', {
strings: ['<i>First</i> sentence.', '& a second sentence.'],
typeSpeed: 50
});
Melhor Caso de Uso
Criar animações de digitação para texto.
Vantagens
Fácil de usar, leve, ótimo para efeitos de digitação.
Desvantagens
Limitado a animações de digitação, menos flexibilidade.
Bibliotecas de Animação Avançadas
14. Three.js – Biblioteca Avançada de JavaScript 3D
Three.js é uma poderosa biblioteca de 3D para JavaScript, que permite criar animações e visualizações 3D complexas. Com mais de 101k estrelas no GitHub, ela é amplamente usada para aplicações web 3D.
Instalação e Uso Básico
npm install three
import * as THREE from 'three';
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
Melhor Caso de Uso
Criar animações 3D avançadas e visualizações.
Vantagens
Extremamente poderosa, comunidade ampla, suporta cenários 3D complexos.
Desvantagens
Curva de aprendizagem acentuada, tamanho de pacote maior.
15. Theatre.js
Teatro.js é uma biblioteca de animação avançada para criar e controlar animações de forma programática. Com mais de 11k estrelas no GitHub, ela fornece uma abordagem baseada em timeline para as animações.
Instalação e Uso Básico
# r3f and its dependencies
npm install --save react three @react-three/fiber
# Theatre.js
npm install --save @theatre/[email protected] @theatre/[email protected] @theatre/[email protected]
# Three.js types (when using Typescript)
npm install --save-dev @types/three
import * as THREE from 'three'
import { createRoot } from 'react-dom/client'
import React, { useRef, useState } from 'react'
import { Canvas, useFrame } from '@react-three/fiber'
import { getProject } from '@theatre/core'
// our Theatre.js project sheet, we'll use this later
const demoSheet = getProject('Demo Project').sheet('Demo Sheet')
const App = () => {
return (
<Canvas
camera={{
position: [5, 5, -5],
fov: 75,
}}
>
<ambientLight />
<pointLight position={[10, 10, 10]} />
<mesh>
<boxGeometry args={[1, 1, 1]} />
<meshStandardMaterial color="orange" />
</mesh>
</Canvas>
)
}
createRoot(document.getElementById('root')!).render(<App />)
Melhor Caso de Uso
Criar animações baseadas em timeline com controle fino.
Vantagens
Controles poderosos de timeline, sequências de animação precisas.
Desvantagens
Biblioteca mais nova, comunidade menor, complexa para iniciantes.
Conclusão
Escolher a biblioteca de animação certa depende dos necessidades e complexidade do seu projeto. Se você está procurando animações simples e rápidas, as bibliotecas baseadas em CSS, como Animate.css, são ideais. Para interações mais complexas e necessidades de alto desempenho, considere as poderosas bibliotecas como GSAP ou Three.js.
Cada biblioteca tem suas fortes, portanto, avalie-as com base em fatores como a facilidade de uso, apoio da comunidade e as funcionalidades específicas que você necessita. Você pode começar a experimentar com estas principais bibliotecas de animação antes de implementá-las em seu projeto.
Tem outras bibliotecas que merecem ser mencionadas? Não hesite em partilhá-las no comentário abaixo! Se você achou este post útil, compartilhe com seus colegas desenvolvedores e explore mais tutoriais neste site.
Obrigado. Boa dia!