Ver o post original devaradise.com/javascript-react-animation-l.. para melhor navegação com o Sumário.
As animações podem levar suas aplicações web de bom a ótimo, tornando-as mais cativantes e interativas. Elas fornecem feedback visual, guiam os usuários pelo interface e adicionam uma pincelada de personalidade a seus projetos.
Há muitas bibliotecas de animação, desde simples, baseadas em CSS, até poderosas bibliotecas JavaScript capazes de criar animações complexas. Neste artigo, nós mergulhamos nas 15 melhores bibliotecas de animação para React e aplicações web modernas.
Da bem conhecida React Spring e Framer Motion às bibliotecas especializadas como Vivus e Three.js, você encontrará algo aqui para tornar seus projetos web brilhantes. Vamos explorar essas bibliotecas e ver como elas podem transformar a experiência do usuário com o seu site!
Bibliotecas de Animação para Casos de Uso Gerais
1. Animate.css – Animação CSS
Animate.css é uma popular biblioteca de 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 Cenário de Uso
Animate.css é o melhor escolhido para animações simples que precisam ser implementadas rápido sem a necessidade de JavaScript.
Pros
Fácil de usar, leve, grande variedade de animações.
Contras
Limitado a animações CSS, menos controle sobre o comportamento das animações.
2. React Spring
React Spring é uma popular biblioteca de animação para React, que fornece uma maneira poderosa e flexível de criar animações com base na física de mola. 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 Cenário de Uso
Criar animações complexas com controle fino nas transições e interações.
Pros
Muito flexível, suporta animações avançadas, bom suporte da comunidade.
Contras
A curva de aprendizagem pode ser acentuada para 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视觉mente atraentes com pouco código.
Pros
API intuitiva, suporta animações de quadro chave, ótima documentação.
Cons
Tamanho de pacote ligeiramente maior em comparação com outras bibliotecas.
4. Anime.js
Anime.js é uma pequena biblioteca de animação em JavaScript com uma poderosa API. 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.
Cons
Requer conhecimento de 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 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 do pacote maior, necessita de tempo de aprendizagem.
6. Popmotion
Popmotion é uma biblioteca de animação em JavaScript funcional e flexível. Ela fornece as animações na 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 Cenário de Uso
Criação de animações e gráficos de movimento complexos.
Vantagens
Versátil, poderoso, ótimo para gráficos de movimento.
Desvantagens
Curva de aprendizagem mais acentuada, tamanho do pacote maior.
Bibliotecas de Animação para Cenários Específicos
8. Remotion – Gerar 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 os desenvolvedores aproveitem o poder do React para a criação de 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 Cenário de Uso
Geração de vídeos de forma programática usando React.
Vantagens
Funcionalidade única, aproveita as habilidades do React, capacidades poderosas de criação de vídeo.
Desvantagens
Caso de uso específico, pode ser complexo para iniciantes.
9. Vivus – Animação de Desenho em 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
Criação de 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
Integração de animações criadas no After Effects.
Pros
A animações 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 de JavaScript para animar elementos de forma fácil conforme entram ou saem da viewport. Com mais de 22.2k estrelas no GitHub, é perfeito 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 Caso de Uso
Adicionar animações de revelação baseadas em rolagem.
Pros
Fácil de usar, leve, ótimo para animações de rolagem
Cons
Limitado a animações baseadas em rolagem.
12. ScrollMagic
ScrollMagic é uma biblioteca para criar interações e animações de 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 Caso de Uso
Criar interações complexas de rolagem e animações.
Pros
Potente, flexível, integra bem com GSAP.
Cons
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.
Pros
Fácil de usar, leve, ótimo para efeitos de digitação.
Cons
Limitado a animações de digitação, menor 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.
Pros
Extremamente poderosa, comunidade vasta, suporta cenários 3D complexos.
Cons
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 um método baseado em cronologia para 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 cronologia com controle fino.
Vantagens
Controles de cronologia poderosos, sequências de animações precisas.
Desvantagens
Biblioteca mais nova, comunidade menor, complexa para iniciantes.
Conclusão
Escolher a biblioteca de animação certa depende dos seus necessidades e complexidade do projeto. Se você está procurando por animações simples e rápidas, bibliotecas baseadas em CSS, como Animate.css, são ideais. Para interações mais complexas e necessidades de alto desempenho, considere bibliotecas poderosas como GSAP ou Three.js.
Cada biblioteca tem suas forças, portanto, avalie-as com base em fatores como facilidade de uso, suporte da comunidade e as funcionalidades específicas que você necessita. Você pode começar a experimentar com essas principais bibliotecas de animação antes de implementá-las em seu projeto.
Tem outras bibliotecas que valeiam a pena mencionar? Não hesite em partilhá-las no comentário abaixo! Se você achou este post útil, compartilhe-o com seus colegas desenvolvedores e explore mais tutoriais neste site.
Obrigado. Boa dia!