Esegui il check-out del post originale devaradise.com/javascript-react-animation-l.. per una migliore navigazione con il Sommario.
Le animazioni possono portare le tue applicazioni web da buone a grandi, rendendole più coinvolgenti e interattive. Forniscono feedback visivo, guidano gli utenti attraverso l’interfaccia e aggiungono un tocco di personalità ai tuoi progetti.
Esistono molte librerie di animazione, dalla semplice, basata su CSS, alle potenti librerie JavaScript in grado di creare animazioni complesse. In questo articolo, ci immergeremo nelle prime 15 librerie di animazione per React e applicazioni web moderne.
Dalle ben note React Spring e Framer Motion alle librerie specializzate come Vivus e Three.js, troverai qui qualcosa che farà brillare i tuoi progetti web. Scopriamo queste librerie e vediamo come possono trasformare l’esperienza utente del tuo sito web!
Librerie di Animazione per Scopi Generici
1. Animate.css – Animazione CSS
Animate.css è una popolare libreria CSS che fornisce una vasta gamma di animazioni predefinite, rendendo facile applicare animazioni a qualsiasi progetto web. Con oltre 80.2k stelle su GitHub e milioni di download da npm, Animate.css è una scelta numero uno per animazioni rapide e semplici.
Installazione e utilizzo base
npm install animate.css
import 'animate.css';
<div class="animate__animated animate__bounce">An animated element</div>
Migliore caso d’uso
Animate.css è ottimizzato per animazioni semplici che devono essere implementate rapidamente senza l’utilizzo di JavaScript.
Pro
Facile da usare, leggero, varietà ampia di animazioni.
Contro
Limitato alle animazioni CSS, meno controllo sul comportamento dell’animazione.
2. React Spring
React Spring è una popolare libreria di animazione per React, che fornisce un modo potente e flessibile per creare animazioni basate sulla fisica delle masse elastiche. Ha oltre 27.8k stelle su GitHub ed è ampiamente utilizzata nella community.
Installazione e utilizzo base
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;
Migliore caso d’uso
Creazione di animazioni complesse con un controllo preciso delle transizioni e delle interazioni.
Pro
Highly flexible, supports advanced animations, good community support.
Contro
La curva di apprendimento può essere elevata per i principianti.
3. Framer Motion
Framer Motion è una potente libreria di animazione conosciuta per la sua facilità d’uso e per le sue funzionalità complete. Ha oltre 22.8k stelle su GitHub ed è ampiamente apprezzata per la sua interfaccia intuitiva.
Installazione e utilizzo base
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;
Migliore caso d’uso
Creazione di animazioni fluide e visivemente attraenti con un minimo di codice.
Pro
Interfaccia intuitiva, supporta le animazioni a keyframe, ottima documentazione.
Contro
Dimensione pacchetto leggermente più grande rispetto alle altre librerie.
4. Anime.js
Anime.js è una leggera libreria di animazione JavaScript con una potente API. Ha oltre 49.2k stelle su GitHub ed è largamente utilizzata per la creazione di animazioni complesse e personalizzabili.
Installazione e utilizzo base
npm install animejs
import anime from 'animejs/lib/anime.es.js';
anime({
targets: 'div',
translateX: 250,
rotate: '1turn',
duration: 800
});
Migliore caso d’uso
Creazione di animazioni intricate e dettagliate con un controllo preciso.
Pro
Leggera, versatile, altamente personalizzabile.
Contro
Richiede conoscenza del JavaScript, può essere complesso per le animazioni semplici.
5. GSAP (GreenSock Animation Platform)
GSAP è una potente libreria di animazione JavaScript nota per la sua alta performance e per un ampio set di funzionalità. Ha oltre 19.2k stelle su GitHub ed è ampiamente utilizzata in entrambe le applicazioni web e mobile.
Installazione e Utilizzo Base
npm install gsap
import { gsap } from 'gsap';
gsap.to('.box', { rotation: 27, x: 100, duration: 1 });
Migliore Scenario d’Uso
Animazioni di alta performance e sequenze complesse.
Vantaggi
Eccellentemente potente, robusto, alta performance.
Svantaggi
Pacchetto bundle più grande, richiede tempo di apprendimento.
6. Popmotion
Popmotion è una libreria di animazione JavaScript funzionale e flessibile. Attua le animazioni in Framer Motion. Ha oltre 19.9k stelle su GitHub e offre una gamma di strumenti per la creazione di animazioni e interazioni.
Installazione e Utilizzo Base
npm install popmotion
import { animate } from 'popmotion';
animate({
from: 0,
to: 100,
onUpdate: (latest) => {
console.log(latest);
}
});
Migliore Scenario d’Uso
Creazione di interazioni a basso livello, complesse e di animazioni altamente personalizzabili.
Vantaggi
API funzionale, flessibile, scalabile e pacchetto tiny.
Svantaggi
Potrebbe essere complesso per casi d’uso semplici.
7. Mo.js
Mo.js è una toolbox per la grafica in motion per il web. Ha oltre 18,3k stelle su GitHub e offre una varietà di strumenti per la creazione di animazioni.
Installazione e Utilizzo Base
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();
Migliore Scenario d’Uso
Creazione di grafiche e animazioni complesse in motion.
Pro
Versatile, potente, eccellente per la grafica in motion.
Contro
Curva di apprendimento più ripida, dimensione pacchetto maggiore.
Librerie di animazione per scopi specifici
8. Remotion – Generate Animation Video with React
Remotion ti consente di creare video in modo programmatico utilizzando React. È una libreria unica con oltre 19,6k stelle su GitHub, che consente agli sviluppatori di sfruttare il potere di React per la creazione di contenuti video.
Installazione e Utilizzo Base
# 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);
Migliore Scenario d’Uso
Generazione programmatica di video tramite React.
Pro
Funzionalità unica, sfrutta le abilità di React, capacità potenti di creazione video.
Contro
Scenario d’uso nicchia, può essere complesso per i principianti.
9. Vivus – Animazione del disegno SVG
Vivus è una libreria JavaScript leggera per l’animazione di SVG. Con oltre 15,1k stelle su GitHub, è un’ottima scelta per la creazione di animazioni SVG.
Installazione e uso di base
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>;
Caso d’uso migliore
Creare animazioni di disegno per SVG.
Pro
Leggero, specializzato per gli SVG, facile da usare.
Cons
Limitato agli SVG, non adatto ad altri tipi di animazioni.
10. Lottie for Web – Render After Effects Animations
Lottie è una libreria per il rendering di animazioni create in Adobe After Effects. Con oltre 29,9k stelle su GitHub, è ampiamente utilizzata per integrare animazioni complesse.
Installazione e uso di base
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
});
Caso d’uso migliore
Integrare animazioni create in After Effects.
Pro
Animazioni di alta qualità, si integra bene con After Effects.
Cons
Richiede After Effects per la creazione di animazioni, file più grandi.
11. ScrollReveal
ScrollReveal è una libreria JavaScript per animare facilmente gli elementi mentre entrano o uscirono dalla visuale. Con oltre 22.2k stelle su GitHub, è perfetta per le animazioni basate sul scroll.
Installazione e utilizzo base
npm install scrollreveal
import ScrollReveal from 'scrollreveal';
ScrollReveal().reveal('.box', { delay: 500 });
<h1 class="headline">Widget Inc.</h1>
Migliore caso d’uso
Aggiunta di animazioni di rivelazione basate sul scroll.
Pro
Facile da usare, leggera, grandi per le animazioni di scroll
Contro
Limitata alle animazioni basate sul scroll.
12. ScrollMagic
ScrollMagic è una libreria per creare interazioni e animazioni basate sul scroll. Con oltre 14.8k stelle su GitHub, offre un modo robusto per gestire le animazioni basate sul scroll.
Installazione e utilizzo base
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
Migliore caso d’uso
Creazione di interazioni e animazioni complesse basate sul scroll.
Pro
Potente, flessibile, integrata bene con GSAP.
Contro
Può essere complesso per le animazioni semplici, dimensione pacchetto maggiore.
13. Typed.js
Typed.js è una libreria JavaScript che digitizza il testo, rendendolo simile a quello che viene digitato da un essere umano. Con oltre 15.1k stelle su GitHub, è ottima per aggiungere animazioni di digitazione.
Installazione e utilizzo base
npm install typed.js
import Typed from 'typed.js';
const typed = new Typed('#element', {
strings: ['<i>First</i> sentence.', '& a second sentence.'],
typeSpeed: 50
});
Migliore caso d’uso
Creazione di animazioni di digitazione per testo.
Pro
Facile da usare, leggero, ottima per gli effetti di digitazione.
Contro
Limitato alle animazioni di digitazione, meno flessibilità.
Librerie di animazione avanzate
14. Three.js – Libreria avanzata JavaScript 3D
Three.js è una potente libreria 3D per JavaScript, che consente di creare complicate animazioni e visualizzazioni 3D. Con oltre 101k stelle su GitHub, è ampiamente utilizzata per le applicazioni web 3D.
Installazione e utilizzo base
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);
Migliore caso d’uso
Creazione di animazioni 3D avanzate e visualizzazioni.
Pro
Eccessivamente potente, ampia comunità, supporta scene 3D complesse.
Contro
Curva di apprendimento steep, dimensione pacchetto maggiore.
15. Theatre.js
Teatro.js è una libreria di animazione avanzata per creare e controllare le animazioni in modo programmatico. Con oltre 11k stelle su GitHub, fornisce un approcio basato su timeline per le animazioni.
Installazione e utilizzo base
# 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 />)
Migliore caso d’uso
Creazione di animazioni basate su timeline con un controllo preciso.
Pro
Strumenti di timeline potenti, sequenze di animazioni precise.
Contro
Presa in considerazione una comunità più piccola e una libreria recente, complessa per i principianti.
Conclusione
Scegliere la giusta libreria di animazione dipende dai bisogni e dalla complessità del tuo progetto. Se stai cercando animazioni semplici e veloci, le librerie basate su CSS come Animate.css sono ideali. Per interazioni più complesse e necessità di alta performance, considerare librerie potenti come GSAP o Three.js.
Ogni libreria ha i suoi punti di forza, quindi valutarle in base a fattori come facilità d’uso, supporto comunità e le specifiche funzionalità richieste. Puoi iniziare a sperimentare queste principali librerie di animazione prima di implementarle nel tuo progetto.
Hai altre librerie da menzionare? Non esiti a condividerle nel commento qui sotto! Se hai trovato questo post utile, condividilo con i tuoi colleghi sviluppatori e scopri altri tutorial sul questo sito web.
Grazie.Buona giornata!