Esempi di Framer Motion: 25 Animazioni React dal Vivo

Esempi di Framer Motion

Esempi di Framer Motion: 25 Animazioni React dal Vivo con Codice | We.Inc

25 esempi di Framer Motion (Motion for React) che girano dal vivo: fade, stagger, layout, elementi condivisi, modal, accordion, drag, avanzamento dello scroll, transizioni di pagina e reduced motion.

Framer Motion, ora pubblicato come Motion for React, anima qualsiasi elemento che sostituisci con un componente motion: imposta le prop initial, animate e transition. Le 25 ricette qui sotto girano dal vivo in questa pagina, ognuna con codice da copiare: entrate, stagger, drag, layout ed elementi condivisi, animazioni di uscita, avanzamento dello scroll, transizioni di pagina e reduced motion.

Installazione

Ogni demo qui è il codice che le sta accanto, in esecuzione nel tuo browser. Le ricette usano il pacchetto motion; se il tuo progetto usa ancora framer-motion, componenti e prop sono gli stessi e cambia solo il percorso di import.

Domande frequenti

Framer Motion è la stessa cosa di Motion?

Sì. La libreria è stata rinominata Motion e la parte React si importa da motion/react. Il pacchetto framer-motion è ancora pubblicato con la stessa API, quindi i tutorial più vecchi continuano a funzionare.

Perché la mia animazione di uscita non parte?

L'elemento deve essere un figlio diretto di AnimatePresence, avere una key unica e avere una prop exit. Se viene rimosso anche il genitore di AnimatePresence, non resta nulla da animare.

Come animo l'altezza fino ad auto?

Anima height da 0 a "auto" su un elemento motion e imposta overflow a hidden. Motion misura l'altezza reale per te, cosa che le transizioni CSS non possono fare.

Framer Motion funziona con i Server Components di Next.js?

I componenti motion usano API del browser, quindi il file che li renderizza ha bisogno di "use client". Un server component può comunque renderizzare quel client component e passargli dei children.

Framer Motion fa male alle prestazioni?

No, se ti limiti a transform e opacity, che girano senza ricalcolare il layout. Grandi animazioni di layout e molti elementi animati insieme costano di più; testa su un telefono di fascia media e usa LazyMotion per ridurre il bundle.

Scegliere tra CSS e Motion

Errori comuni

L'API in breve

Prop e hook usati in questa pagina

Entrate

1. Fade in al montaggio

initial è il primo frame, animate è dove finisce. Non serve altro per un'entrata singola.

2. Scorrimento verso l'alto con fade

Muoversi con y usa un transform CSS, quindi l'elemento non spinge mai i vicini mentre si sposta.

3. Lista con stagger

Le variants sono stati con nome. Il genitore trasmette il suo stato ai figli e staggerChildren ritarda ogni figlio un po' più del precedente.

4. Comparsa quando entra nella vista

whileInView avvia l'animazione quando l'elemento entra nel viewport; once: true impedisce che si ripeta a ogni scroll.

5. Keyframe

Un array è un elenco di keyframe. times li distribuisce lungo la durata, da 0 a 1.

Gesti

6. Hover e tap

whileHover e whileTap animano verso uno stato finché dura il gesto, poi tornano indietro da soli.

7. Trascinare dentro un riquadro

dragConstraints può ricevere un ref a un elemento genitore, così l'elemento non può mai essere trascinato fuori.

8. Scartare una card con uno swipe

Trascina su un asse, poi leggi offset e velocità in onDragEnd per decidere se la card se ne va o torna al suo posto.

9. Trascinare per riordinare

Reorder.Group tiene l'array nello state e ti restituisce il nuovo ordine. Ogni Reorder.Item ha bisogno del valore che rappresenta.

10. Scossa su una risposta sbagliata

Animare x attraverso alcuni keyframe dà la classica scossa. Attivala cambiando una key o chiamando animate da useAnimate.

Layout, uscite e transizioni di pagina

11. Animazione di layout

Aggiungi layout e cambia dimensione o posizione con il normale CSS. Motion misura prima e dopo e anima la differenza con i transform.

12. Elemento condiviso (sottolineatura delle tab che si sposta)

Due elementi con lo stesso layoutId sono trattati come uno solo. Quando la sottolineatura viene renderizzata sotto una nuova tab, scivola fin lì.

13. Animazioni di uscita con AnimatePresence

React rimuove gli elementi all'istante. Avvolgerli in AnimatePresence mantiene montato un figlio in uscita finché la sua animazione exit non finisce.

14. Modal con sfondo

Sfondo e pannello fanno il fade insieme; il pannello inoltre sale. Mantieni la vera semantica del dialog (role, focus, Escape) nel tuo codice.

15. Accordion con height auto

Motion può animare fino a height: "auto", cosa che le semplici transizioni CSS non possono fare. overflow hidden impedisce al testo di debordare mentre si apre.

16. Pila di toast

layout su ogni toast fa scorrere gli altri verso l'alto in modo fluido quando uno se ne va. popLayout fa smettere subito al toast in uscita di occupare spazio.

17. Transizioni di pagina

mode="wait" lascia che la vecchia pagina finisca di uscire prima che entri la nuova. La key deve cambiare con la route.

Scroll e motion value

18. Barra di avanzamento dello scroll

useScroll dà scrollYProgress da 0 a 1. Passa container per seguire un riquadro che scorre invece della finestra, e scala la barra di conseguenza.

19. Parallasse con useTransform

useTransform mappa un motion value su un altro intervallo, così un livello può muoversi a una velocità diversa dallo scroll.

20. Contatore che sale

animate() può guidare un motion value. useTransform lo arrotonda, e renderizzare direttamente il motion value evita un render di React a ogni frame.

SVG, cicli, sequenze e accessibilità

21. Disegnare una linea SVG

pathLength va da 0 a 1 su qualsiasi path, circle o line, ed è il modo più rapido per disegnare una spunta o una firma.

22. Spinner di caricamento

repeat: Infinity con un ease lineare dà una rotazione costante. Abbinalo a un testo visibile o per screen reader che dica cosa si sta caricando.

23. Sequenza con useAnimate

useAnimate restituisce un ref di scope e una funzione animate. Attendere ogni chiamata con await esegue i passaggi in ordine, e stagger distribuisce un passaggio su molti elementi.

24. Regolare uno spring

Stiffness imposta quanto forte tira la molla, damping quanto velocemente si assesta. Un damping basso supera il bersaglio e oscilla.

25. Rispettare la riduzione del movimento

MotionConfig reducedMotion="user" disattiva le animazioni di transform e layout per chi chiede al proprio sistema meno movimento, mantenendo i fade.

Next.js e dimensione del bundle

App Router di Next.js: animazione di entrata per pagina

Un file template.tsx viene rimontato a ogni navigazione, a differenza di layout.tsx, quindi il suo passaggio da initial ad animate parte ogni volta che cambi pagina. Ha bisogno di "use client" perché usa motion.

Bundle più piccoli con LazyMotion

Il componente m più LazyMotion carica solo le funzionalità che elenchi. domAnimation copre animazioni, variants, exit e gesti; domMax aggiunge drag e layout.

Preferisci un effetto senza JavaScript? Prova il

generatore di animazioni CSS

Rivedi

Ciao

Card

Pianifica

Progetta

Costruisci

Lancia

Scorri questo riquadro verso il basso.

Contenuto della sezione

Premimi

Pallina trascinabile

Card {n}

{card}: scorrimi via

Reimposta

Logo

Menu

Hero

Footer

Password (qui ogni risposta è sbagliata)

Accedi

Ingrandisci o rimpicciolisci il riquadro

Home

Prezzi

Blog

Nascondi

Mostra

Apri modal

Salvato

Chiudi

Cosa è incluso?

Hosting, un indirizzo gratuito e l'editor.

Bozza {n} salvata

Aggiungi toast

Benvenuto a casa.

Informazioni su questo studio.

Salutaci.

Paragrafo {n}. Continua a scorrere per vedere la barra riempirsi mentre leggi questo riquadro.

Caricamento

Uno

Due

Tre

Avvia

Sposta

Il tuo sistema chiede movimento ridotto: {answer}. Con sì, il riquadro qui sotto fa solo un fade.

Renderizzato con il componente m

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito