Generatore di animazioni CSS

Costruisci visivamente animazioni CSS @keyframes · scegli una preimpostazione o personalizza durata, trasformazioni e curve. Copia codice pronto per la produzione.

Preimpostazioni

Impostazioni

Anteprima

Box

CSS generato

Come usare

  1. Scegli una preimpostazione di animazione: seleziona tra le animazioni comuni, dissolvenza, scorrimento, rimbalzo, rotazione, pulsazione, scossa e altro.
  2. Personalizza la durata e il comportamento: regola durata, ritardo, funzione di easing, numero di iterazioni e fill mode.
  3. Copia il CSS: la definizione @keyframes completa e la proprietà abbreviata animation sono pronte da incollare nel tuo foglio di stile.

Perché usare il generatore di animazioni CSS?

Le animazioni CSS danno vita alle interfacce, attirando l'attenzione sugli elementi chiave, dando feedback visivo e creando esperienze utente curate. Scrivere regole @keyframes a mano richiede di conoscere la giusta sintassi, i nomi delle curve e le buone combinazioni di proprietà. Questo generatore propone preimpostazioni di animazione curate con anteprima dal vivo e ti lascia regolare ogni parametro, producendo CSS pronto per la produzione senza JavaScript né libreria di animazione.

Funzionalità

Domande frequenti

Qual è la differenza tra animation e transition in CSS?

Le transizioni CSS si attivano su cambiamenti di stato (hover, focus, alternanza di classe) e animano tra due stati. Le animazioni CSS usano @keyframes per definire più stati e funzionano indipendentemente dall'interazione utente, possono fare loop, invertirsi e avviarsi automaticamente.

Cos'è animation-fill-mode e perché è importante?

animation-fill-mode controlla se l'elemento conserva gli stili dell'animazione prima che inizi (backwards), dopo che è terminata (forwards), o entrambi. Senza forwards, l'elemento torna bruscamente al suo stile originale alla fine dell'animazione.

Le animazioni CSS sono performanti?

Le animazioni che usano solo transform e opacity sono accelerate dalla GPU e molto fluide. Evita di animare proprietà di layout come width, height, margin o top/left, attivano ricalcoli di layout e possono causare scatti. Resta su transform e opacity per il 60 fps.

Cosa fanno effettivamente le animazioni CSS

Le animazioni CSS interpolano una o più proprietà CSS tra keyframe definiti nel tempo, producendo movimento o cambiamento visibile senza JavaScript. Il modello ha due pezzi: le regole @keyframes definiscono come appare un'animazione in passi basati su percentuali (da 0% a 100%), e la proprietà shorthand animation (o i suoi parenti longhand animation-duration, animation-delay, animation-timing-function, animation-iteration-count, animation-fill-mode) dice al browser come riprodurre quella definizione di keyframes. Il browser gestisce tutta l'interpolazione, l'easing e il timing dei frame in C++, tipicamente accelerato dalla GPU per i cambiamenti di transform e opacity.

Le animazioni differiscono dalle transizioni CSS in due modi. Le transizioni si attivano quando lo stato di un elemento cambia (un hover, un toggle di classe, un evento focus) e interpolano tra esattamente due valori: il vecchio e il nuovo. Le animazioni funzionano indipendentemente dallo stato, seguono un numero arbitrario di passi di keyframe, possono andare in loop indefinitamente, possono essere riprodotte al contrario, e possono essere attivate, messe in pausa e riprese tramite CSS o JavaScript. Le transizioni sono lo strumento giusto per "scatto da A a B in mezzo secondo"; le animazioni sono lo strumento giusto per "esegui in loop questo pulse che attira l'attenzione per sempre" o "riproduci questa sequenza di ingresso una volta quando l'elemento appare".

Per il web design moderno, le animazioni CSS sostituiscono un'enorme quantità di ciò che una volta richiedeva librerie JavaScript. Spinner, fade-in, slide-up, pulse di attenzione, segni di spunta di successo: tutti sono ora pattern CSS standard. Il compromesso è l'espressività per sequenze complesse. Le animazioni CSS possono fare molto ma smettono di essere convenienti intorno ai 5-7 passi di keyframe con cambi di proprietà sincronizzati; per animazioni con storyboard, sequenze legate allo scroll, o qualsiasi cosa dinamica che dipende dallo stato JavaScript, le librerie dedicate (GSAP, Framer Motion, Web Animations API) rimangono la scelta migliore.

Come funziona questo strumento sotto il cofano

Quando scegli un preset (es. "bounce" o "fade-in") lo strumento carica una stringa @keyframes predefinita nell'area di anteprima e applica la proprietà animation alla casella di anteprima. I keyframe sono CSS reali, non un formato personalizzato: quello che vedi è quello che ottieni da copiare. Gli slider aggiornano i valori di timing dell'animazione (duration, delay, iteration count) modificando la proprietà animation inline in tempo reale, quindi l'anteprima riflette ogni modifica istantaneamente senza ricaricare la pagina.

La selezione della funzione di easing usa i valori standard CSS timing-function: linear (velocità costante), ease (default, inizio e fine lenti), ease-in (inizio lento), ease-out (fine lenta), ease-in-out (inizio e fine lenti), o cubic-bezier(x1, y1, x2, y2) per curve personalizzate. La curva di animazione visibile è calcolata dall'implementazione nativa della timing-function del browser; l'anteprima è l'output effettivo renderizzato dal browser, non una simulazione JavaScript.

La casella del codice mostra il CSS completo di cui hai bisogno per inserire in un foglio di stile: sia il blocco @keyframes che la dichiarazione .your-class { animation: ... }. Clicca "Copia CSS" e entrambi vengono scritti negli appunti come un singolo blocco di testo. Non viene generato alcun file, nessun server elabora nulla, e lo strumento non ha un backend da chiamare. L'anteprima, la generazione del codice e la scrittura negli appunti avvengono tutti in JavaScript sul tuo dispositivo. Aggiorna la pagina e la tua configurazione personalizzata è persa a meno che tu l'abbia copiata prima.

Breve storia dell'animazione web

Flussi di lavoro del mondo reale

Trappole comuni e cosa significano

Privacy: tutto funziona nel tuo browser

Gli strumenti generatori CSS vengono in due sapori: semplici pagine HTML che eseguono JavaScript lato client (private, veloci) ed editor cloud che salvano i tuoi progetti (collaborativi ma con compromessi sulla privacy). Questo strumento è del primo tipo. I valori dei tuoi slider, il tuo preset selezionato, il tuo CSS generato: tutto resta nella tua sessione del browser. Aggiorna la pagina e lo stato è perso a meno che tu abbia copiato il CSS prima. Nessun server memorizza le tue scelte di animazione, nessuna analitica traccia quali preset hai testato e non è necessario alcun account.

La proprietà della privacy conta principalmente per il lavoro di design proprietario. Uno studio che prototipa animazioni per un progetto cliente confidenziale, uno sviluppatore che lavora sulle micro-interazioni di un'app non ancora annunciata, o un designer che itera su una campagna di brand: qualsiasi contesto in cui la storia delle iterazioni o il design in corso potrebbero far trapelare informazioni sul lavoro. Con questo strumento, non c'è nulla catturato perché nulla viene inviato. Apri la scheda Rete del browser e vedrai zero richieste in uscita durante l'uso; solo il caricamento iniziale della pagina recupera l'HTML e JavaScript.

Quando un altro strumento è la scelta giusta

Altre domande frequenti

Come faccio a far riprodurre un'animazione solo una volta?

Imposta animation-iteration-count: 1 (che è il default se non specificato). Per fare in modo che l'elemento rimanga nello stato finale dell'animazione dopo che si completa (invece di tornare indietro allo stile originale), imposta anche animation-fill-mode: forwards. Lo shorthand combinato è animation: fadeIn 0.5s ease-out forwards;.

Posso mettere in pausa e riprendere un'animazione?

Si, con animation-play-state: paused (o running). Attiva/disattiva questa proprietà tramite JavaScript (es. al click di un pulsante) o in CSS tramite :hover per i pattern "pausa al passaggio del mouse". L'animazione si blocca al suo punto attuale e riprende da li quando è impostata di nuovo su running, senza progresso perso. Questo funziona allo stesso modo nelle transizioni ma solo la proprietà animation-play-state esiste per il controllo di pausa a runtime.

Come faccio ad attivare un'animazione al click o allo scroll?

Per i trigger di click, attiva/disattiva una classe CSS tramite JavaScript: element.classList.toggle('animate-in'). L'animazione viene eseguita quando la classe viene aggiunta. Per i trigger di scroll, usa IntersectionObserver per rilevare quando l'elemento entra nel viewport e aggiungi la classe allora. Per i browser moderni, le animazioni CSS guidate dallo scroll ti permettono di legare il progresso dell'animazione direttamente alla posizione dello scroll senza JavaScript tramite animation-timeline: scroll().

Perché la mia animazione sfarfalla o balbetta?

La maggior parte dei problemi di sfarfallio/balbettio viene dall'animare proprietà che attivano il layout (width, height, top/left) invece di equivalenti basati su transform. Cambia left: 0 in transform: translateX(0) e l'animazione dovrebbe diventare fluida. Altre cause: overdraw da molti livelli semi-trasparenti, layout thrashing da JavaScript che legge e scrive stili nello stesso frame, o ombre e filtri eccessivi sull'elemento animato.

Dovrei usare le animazioni su interfacce critiche per l'accessibilità?

Usale, ma rispetta prefers-reduced-motion. Le linee guida WCAG 2.1 raccomandano di fornire l'opzione di disabilitare il movimento non essenziale. Avvolgi le animazioni decorative in @media (prefers-reduced-motion: no-preference) cosi gli utenti che impostano la preferenza del sistema operativo ottengono un'esperienza statica. Le animazioni di feedback essenziali (indicatori di caricamento, shake di errore) possono essere mantenute; quelle puramente decorative dovrebbero essere opt-in per utenti sensibili.

Posso usare cubic-bezier per curve di easing personalizzate?

Si. La funzione di timing cubic-bezier(x1, y1, x2, y2) ti permette di definire qualsiasi curva di easing con due punti di controllo. Ogni valore x è tra 0 e 1 (che rappresenta il tempo), i valori y possono essere negativi o maggiori di 1 (permettendo effetti di overshoot e bounce). Usa il nostro strumento Cubic Bezier o il classico cubic-bezier.com di Lea Verou per scegliere una curva visivamente. Alternative preset comuni: ease, ease-in, ease-out, ease-in-out, e le variabili CSS linear-aliased cubic-bezier(0.25, 0.1, 0.25, 1) (ease predefinito).

Strumenti correlati

Generatore gradiente CSS Generatore di Bezier cubici CSS Generatore di CSS / Spinner Generatore di CSS Flexbox