CSS Fogli Di Stile

Animazioni Con Keyframes

Animazioni con keyframes: teoria, esempi e sperimentazione nel browser.

Prerequisiti: Transizioni.

Animazioni con @keyframes

Animazioni con @keyframes: fondamenti.

@keyframes definisce stati di un’animazione mediante percentuali o parole from e to. La proprietà animation collega il nome a durata, andamento e altre componenti. A differenza della transizione, l’animazione può eseguire una sequenza definita senza richiedere un hover che cambi il valore.

Come funziona: animazioni con @keyframes

Animazioni con @keyframes: comportamento nel browser.

La percentuale indica un punto relativo nel tempo dell’iterazione, non una posizione della scatola. animation-iteration-count definisce il numero di ripetizioni; infinite non è obbligatorio. Per una decorazione didattica è meglio iniziare con una sola iterazione breve, evitando movimenti continui che distraggono o ostacolano la lettura.

Scelte di utilizzo e limiti

Animazioni con @keyframes: progetto e verifica.

Alla fine il valore può tornare allo stato di base secondo le impostazioni. Definisci uno stato di base valido e non usare l’animazione come unico modo di rendere un contenuto visibile. Prefers-reduced-motion permette di rimuovere l’effetto senza perdere l’informazione. Il CSS non deve costringere ogni utente a osservare lo stesso movimento.

Idea chiave: L’effetto dura 400ms e si esegue una volta. Lo stato di base resta visibile anche se l’animazione è disattivata.

Esempio commentato

Animazioni con @keyframes: HTML e CSS.

Esempio con stile esterno. Il documento index.html collega il file stile.css mediante il tag link nella head.

Documento HTML completo

<!doctype html>
<html lang="it">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Animazioni con @keyframes</title>
<link rel="stylesheet" href="stile.css">
</head>
<body>
<p class="nota">Una nota che appare con un piccolo effetto.</p>
</body>
</html>

File stile.css

.nota { padding: 1rem; border: 1px solid navy; animation: comparsa 400ms ease 1; }
@keyframes comparsa {
  from { opacity: 0.5; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) { .nota { animation: none; } }

L’effetto dura 400ms e si esegue una volta. Lo stato di base resta visibile anche se l’animazione è disattivata.

ProprietàValore nell’esempioSignificato
padding1remSpazio interno fra contenuto e bordo.
border1px solid navyAbbreviazione per spessore, stile e colore del bordo.
animationcomparsa 400ms ease 1Nome e caratteristiche dell’animazione.
opacity0.5Opacità dell’intera resa dell’elemento.
transformtranslateY(8px)Trasformazione visuale della scatola.
Attenzione: La percentuale dei keyframe riguarda il tempo. Non rendere il contenuto dipendente dall’esecuzione dell’effetto.

LABORATORIO

Sperimentare: Animazioni con @keyframes

L’effetto dura 400ms e si esegue una volta. Lo stato di base resta visibile anche se l’animazione è disattivata.

Obiettivo: Comprendere e applicare animazioni con @keyframes attraverso esempi e verifica nel browser.

Software: editor di testo e browser con DevTools; Tempo: 15 minuti.

Preparazione: scarica l’esempio completo e estrai lo ZIP. Apri index.html nel browser. Puoi anche aprire l’esempio online.

Apri il file stile.css nell’editor. Le lezioni iniziali usano un documento già preparato per concentrarsi sulle regole; il collegamento esterno e lo stile interno vengono spiegati nelle lezioni dedicate. Le modifiche nei DevTools sono normalmente temporanee.

Procedura passo passo

  1. Osserva il punto di partenza: apri l’esempio, confronta markup e regole e individua il selettore o il contesto di layout rilevante.
  2. Esegui la modifica: Ricarica la pagina, poi emula reduced-motion e ricarica ancora.
  3. Salva e ricarica la pagina dopo ogni modifica. Confronta gli elementi che devono cambiare con quelli che devono restare invariati.
  4. Ispeziona il risultato: usa il menu Ispeziona e controlla Styles/Regole e Computed/Calcolato. Per layout Flex o Grid attiva l’overlay, se disponibile.
  5. Annota causa ed effetto: scrivi il valore o la struttura iniziale, il cambiamento e il risultato. Ripristina il punto di partenza prima dell’esercizio autonomo.
Cosa devi vedere — Output atteso

Nello stato normale compare un breve effetto; con reduce la nota è subito disponibile senza movimento.

Il font e alcuni dettagli dell’interfaccia dipendono dal browser. Valuta la proprietà e il comportamento descritti, non una corrispondenza perfetta con uno screenshot.

Verifica del risultato

ControlloCriterio
Effetto specificoNello stato normale compare un breve effetto; con reduce la nota è subito disponibile senza movimento.
Corrispondenza del codiceIndividua la dichiarazione o la relazione HTML responsabile della differenza.
PersistenzaRiporta la modifica nel file e verifica dopo un ricaricamento.
SpiegazioneMotiva la differenza senza affidarti soltanto a uno screenshot.
Se il risultato non coincide: verifica file aperto, salvataggio, percorso del CSS, selettore e validità dei valori. Controlla poi la cascata e le dimensioni del viewport. Cambia una sola causa alla volta.

Esercizio autonomo

Aggiungi uno stato al 50% che mantenga la nota parzialmente spostata.

Consegna: file modificati e una breve spiegazione di selettore, proprietà e risultato. Criterio di riuscita: il cambiamento richiesto funziona dopo il ricaricamento e non taglia informazioni indispensabili.

Una possibile soluzione dell’esercizio
@keyframes comparsa {
  from { opacity: 0.5; transform: translateY(8px); }
  50% { opacity: 0.8; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

Integra la soluzione nel punto pertinente: modifica o sostituisci le regole coinvolte invece di accumulare dichiarazioni contraddittorie. Le altre parti dell’esempio restano necessarie.

Verifica dei concetti

Animazioni con @keyframes: interpretazione e applicazione.

Seleziona una domanda per visualizzare la risposta e confrontarla con la tua.

1. Che cosa definisce @keyframes? ▾
Risposta: Gli stati nel tempo di un’animazione. @keyframes definisce stati di un’animazione mediante percentuali o parole from e to. La proprietà animation collega il nome a durata, andamento e altre componenti. A differenza della transizione, l’animazione può eseguire una sequenza definita senza richiedere un hover che cambi il valore.
2. Come si interpreta il codice dell’esempio? ▾
Risposta: L’effetto dura 400ms e si esegue una volta. Lo stato di base resta visibile anche se l’animazione è disattivata.
3. Quale risultato permette di verificare la modifica del laboratorio? ▾
Risposta: Nello stato normale compare un breve effetto; con reduce la nota è subito disponibile senza movimento.
4. Quale attenzione evita un’interpretazione sbagliata? ▾
Risposta: La percentuale dei keyframe riguarda il tempo. Non rendere il contenuto dipendente dall’esecuzione dell’effetto.

Riferimento tecnico: MDN — riferimento CSS. Cerca le proprietà o i selettori utilizzati nell’esempio.