Le animazioni su un sito web non sono soltanto un vezzo estetico: possono migliorare la user experience, dare feedback all’utente e rendere l’interfaccia più coinvolgente. Spesso, quando si pensa alle animazioni, si immagina il ricorso a JavaScript o a librerie complesse. Ma esiste una soluzione nativa e potente direttamente in CSS: le animazioni tramite @keyframes.
In questo articolo esploreremo:
- Cosa sono i keyframe in CSS.
- Come si definiscono e si applicano le animazioni.
- Le potenzialità e i vantaggi di usare solo CSS (senza JavaScript).
1. Cosa sono i keyframe in CSS
I keyframe rappresentano i “punti chiave” dell’animazione. Definiscono come un elemento cambia nel tempo, impostando differenti stati per determinate percentuali della durata totale dell’animazione. Attraverso i keyframe, si decide esattamente come e quando un elemento si trasformerà (in termini di proprietà CSS come colore, posizione, dimensione, opacità, ecc.).
Sintassi di base
@keyframes nomeAnimazione {
0% {
/* stato iniziale */
}
50% {
/* stato intermedio */
}
100% {
/* stato finale */
}
}
0%
indica l’inizio dell’animazione.100%
indica la fine.- È possibile inserire tutte le percentuali intermedie desiderate, come ad esempio 25%, 50%, 75%, per definire gli step dell’animazione.
2. Come si definiscono e si applicano le animazioni
Dopo aver definito i keyframe, si passa all’elemento HTML che vogliamo animare. Attraverso le proprietà animation-name
, animation-duration
, animation-timing-function
e altre, si controlla il funzionamento dell’animazione.
Esempio pratico
Definizione dei keyframe
@keyframes pulsazione {
0% {
transform: scale(1);
background-color: #3498db;
}
50% {
transform: scale(1.2);
background-color: #f1c40f;
}
100% {
transform: scale(1);
background-color: #3498db;
}
}
In questo esempio:
- Al 0% (inizio) l’elemento ha dimensioni normali e un colore di sfondo blu.
- A metà animazione (50%) si ingrandisce leggermente e il colore passa al giallo.
- A fine animazione (100%) torna alle dimensioni originali e al colore iniziale.
Applicazione all’elemento
.box {
width: 100px;
height: 100px;
animation-name: pulsazione;
animation-duration: 2s; /* Quanto dura l’animazione */
animation-iteration-count: infinite; /* Ripete l’animazione all’infinito */
animation-timing-function: ease-in-out; /* Definisce l’andamento dell’animazione */
animation-direction: alternate; /* Alterna avanti e indietro */
}
Spiegazione delle proprietà principali:
- animation-name: nome del blocco @keyframes da utilizzare.
- animation-duration: durata dell’animazione (in secondi o millisecondi).
- animation-iteration-count: quante volte ripetere l’animazione (
infinite
per loop continuo). - animation-timing-function: come l’animazione accelera e decelera (es.
linear
,ease
,ease-in
,ease-out
,ease-in-out
). - animation-direction: se impostato su
normal
, l’animazione riparte dall’inizio dopo ogni ciclo. Sealternate
, va avanti e poi indietro.
Altre proprietà utili includono animation-delay
(quanto tempo deve aspettare prima di iniziare) e animation-fill-mode
(come comportarsi prima o dopo la fine dell’animazione).
3. Le potenzialità di usare solo CSS
L’uso di animazioni puramente in CSS ha alcuni vantaggi:
- Prestazioni: Le animazioni in CSS sono gestite dal browser in modo ottimizzato, spesso eseguite su thread separati (hardware acceleration).
- Semplicità e manutenzione: Non serve scrivere codice JavaScript dedicato; il tutto è concentrato nel foglio di stile.
- Dichiaratività: Descrivendo keyframe e proprietà di animazione, il codice risulta più facile da leggere e gestire.
- Zero dipendenze: Non occorre alcuna libreria esterna o framework JavaScript per dare vita a effetti interessanti.
Naturalmente, per animazioni complesse che richiedono interattività avanzata (ad esempio, sincronizzare l’animazione con input dell’utente o controlli di avanzamento personalizzati), JavaScript risulta ancora importante. Ma in molti casi, le animazioni CSS sono più che sufficienti e notevolmente più leggere.
Conclusione
Le animazioni CSS con @keyframes aprono le porte a una vasta gamma di effetti visivi, permettendoci di arricchire l’esperienza utente senza dover scrivere codice JavaScript. Dal semplice pulsare di un bottone a transizioni elaborate, i keyframe permettono di gestire le diverse fasi dell’animazione in modo dichiarativo e intuitivo.
Se cerchi di rendere un sito più dinamico e coinvolgente, vale la pena sperimentare con le animazioni in CSS: la curva di apprendimento è relativamente breve e i risultati possono essere notevoli anche in termini di performance. Provare per credere!
Hai trovato utile questo Articolo? Continua a seguire Cyberalchimista sui social (@cyberalchimista) per altri tutorial e consigli sullo sviluppo web! Se hai domande o vuoi condividere i tuoi progetti contattaci.