back to top

CSS Animations: l’arte del movimento senza JavaScript

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:

  1. Cosa sono i keyframe in CSS.
  2. Come si definiscono e si applicano le animazioni.
  3. 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. Se alternate, 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:

  1. Prestazioni: Le animazioni in CSS sono gestite dal browser in modo ottimizzato, spesso eseguite su thread separati (hardware acceleration).
  2. Semplicità e manutenzione: Non serve scrivere codice JavaScript dedicato; il tutto è concentrato nel foglio di stile.
  3. Dichiaratività: Descrivendo keyframe e proprietà di animazione, il codice risulta più facile da leggere e gestire.
  4. 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.

Condividi

Articoli Recenti

Categorie popolari