Animazioni CSS con keyframe in React
Applichi e rimuova dinamicamente le animazioni @keyframes in base allo stato e agli eventi del componente.
Animazioni CSS con keyframe in React è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.
Definire @keyframes
Una regola @keyframes descrive un'animazione a più passaggi indicando i valori delle proprietà in punti della linea temporale, usando from/to o percentuali come 0%, 50%, 100%.
A differenza delle transizioni, i keyframe possono descrivere movimenti complessi articolati in più fasi, eseguiti autonomamente senza un cambio di stato a ogni passaggio.
La sintassi abbreviata di animation
Si applica un insieme di keyframe con la proprietà animation: animation: slideIn 400ms ease forwards. Questa proprietà riunisce il nome, la durata, la funzione di temporizzazione e la modalità di riempimento.
La modalità di riempimento forwards mantiene l'elemento sui valori del keyframe finale dopo la conclusione dell'animazione, impedendo che torni bruscamente all'inizio.
Applicare una classe di animazione tramite lo stato
In React in genere si aggiunge una classe che contiene la dichiarazione animation quando lo stato diventa true. Ad esempio, aggiungere is-entering avvia i keyframe nel momento in cui l'elemento viene montato o cambia un flag.
In questo modo la logica dell'animazione resta in CSS, mentre React decide semplicemente quando aggiungere la classe.
animation-fill-mode
animation-fill-mode controlla quali stili si applicano prima e dopo l'esecuzione dell'animazione. forwards conserva l'ultimo keyframe, backwards applica il primo durante un eventuale ritardo e both fa entrambe le cose.
Senza forwards, un elemento animato verso uno stato con dissolvenza in entrata tornerebbe invisibile al termine dell'animazione.
animation-direction alternate
animation-direction: alternate riproduce l'animazione prima in avanti e poi all'indietro a ogni iterazione. In combinazione con animation-iteration-count: infinite, crea un movimento fluido avanti e indietro, simile a un effetto pulsante o di respirazione.
È utile per gli indicatori di caricamento o per movimenti discreti che attirano l'attenzione.
Mettere in pausa con animation-play-state
animation-play-state può essere running o paused. È possibile controllarlo tramite lo stato di React, ad esempio mettendo in pausa un marquee al passaggio del mouse cambiando una classe.
Poiché viene messa in pausa anziché reimpostata, l'animazione riprende esattamente dal punto in cui si è fermata.
Riattivare cambiando la prop key
Un'animazione basata su keyframe viene eseguita una sola volta quando la sua classe viene applicata per la prima volta; aggiungere di nuovo la stessa classe non la riavvia. Il modo più semplice in React consiste nel cambiare la key dell'elemento, così React monta nuovamente un nodo nuovo e riproduce l'animazione dall'inizio.
Ad esempio, key={count} su un toast lo fa montare nuovamente ogni volta che count viene incrementato.
Rispettare prefers-reduced-motion
Alcuni utenti abilitano la riduzione del movimento nel sistema operativo per comfort o accessibilità. Racchiuda le animazioni non essenziali in @media (prefers-reduced-motion: reduce) e lì le disabiliti o ne riduca la durata.
Rispettare questa preferenza rende l'interfaccia più inclusiva e aiuta a evitare di provocare disagio.
Attivare allo scorrimento con IntersectionObserver
Per animare gli elementi quando entrano nell'area visibile, usi un IntersectionObserver in un useEffect. Quando l'elemento osservato diventa visibile, aggiorni lo stato, che aggiunge la classe di animazione.
Questo produce effetti di comparsa allo scorrimento senza listener di scroll pesanti in esecuzione a ogni frame.
Orchestrare con animation-delay
animation-delay sfalsa il momento in cui inizia ogni animazione con keyframe. Assegnando ritardi crescenti a un elenco di elementi, questi vengono animati in sequenza per una comparsa orchestrata.
In React è possibile calcolare il ritardo per ogni elemento con style={{ animationDelay: i * 80 + 'ms' }}.
Keyframe e transizioni
Usi le transizioni per semplici cambiamenti a due stati guidati dall'interazione e i keyframe quando servono movimenti a più fasi, loop o un'animazione indipendente da un cambio di stato.
Entrambe sono puro CSS, quindi React decide solo quando applicare le classi e il browser gestisce i frame.
Verifica rapida
Verifichi la sua comprensione del comportamento dei keyframe.
Riepilogo
Ha imparato a definire @keyframes, ad applicarli con la forma abbreviata animation, a controllare la modalità di riempimento e la direzione, a mettere in pausa e riattivare le animazioni e a mostrare gli elementi allo scorrimento con IntersectionObserver.
Ha anche visto come rispettare prefers-reduced-motion per ottenere animazioni accessibili.
Domande Frequenti
La lezione «Animazioni CSS con keyframe in React» è gratuita?
Sì — il testo completo di «Animazioni CSS con keyframe in React» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.
Cosa imparerò in «Animazioni CSS con keyframe in React»?
Applichi e rimuova dinamicamente le animazioni @keyframes in base allo stato e agli eventi del componente. Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare React Academy?
Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Animazioni CSS con keyframe in React»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione React Academy?
Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Transizioni CSS con i cambiamenti di stato in React
- Animazioni CSS con keyframe in React
- useLayoutEffect per le misurazioni pre-animazione
- Animazioni di entrata e uscita senza librerie