7 days of unlimited WordPress themes, plugins & graphics - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Web Design
  2. CSS Animation

Un'introduzione All'Animazione CSS per Principianti

Scroll to top
Read Time: 7 mins

Italian (Italiano) translation by Matteo Verolla (you can also view the original English article)

Al giorno d'oggi, sempre più siti web stanno usando le animazioni, sia che si tratti in formato GIF, SVG, WebGL, un video di sfondo e così via. Se usato correttamente, l'animazione sul web porta vita e interattività, l'aggiunta di un ulteriore livello di feedback e l'esperienza per gli utenti.

In questo tutorial vi introdurrò alle animazioni CSS; un modo altamente performante di fare le cose, che sta diventando sempre più popolare, come il miglioramento del supporto del browser. Dopo aver coperto le basi, andremo a costruire un rapido esempio, che animerà un elemento quadrato in un cerchio:

Un'introduzione a @keyframes e Animazione

La componente principale delle animazioni in CSS è il @keyframes , la regola del CSS con la quale viene creata l'animazione.  Pensate ai @keyframes come tappe lungo una linea temporale. Dentro ai @keyframes , potete definire queste fasi, ognuna con una dichiarazione di stile differente.

Successivamente, per far si che le animazioni CSS funzionino, è necessario associare i @keyframes ad un selettore. Questo, gradualmente, analizzerà tutto il codice all'interno delle dichiarazioni dei @keyframes e cambierà lo stile iniziale con quello nuovo, basandosi sulle fasi.

I @keyframes

Qui imposteremo le fasi dell'animazione. Le nostre proprietà dei @keyframes sono:

  • Un nome a nostra scelta (tutsFade in questo caso).
  • Fasi: 0%-100%; da (uguale a 0%) a (uguale a 100%).
  • Stili CSS: lo stile che si desidera applicare per ogni fase.

Per esempio:

oppure:

O eventualmente:

Il codice sopra applicherà una transizione all'opacità di un elemento, da opacity: 1 a opacity: 0 . Ognuno degli approcci, mostrati sopra, raggiungeranno lo stesso risultato finale.

L'Animazione

La proprietà animation è usata per chiamare i @keyframes all'interno di un selettore CSS. Animation può avere molteplici proprietà:

  • animation-name: @keyframes nome (ricordatevi che noi abbiamo scelto tutsFade).
  • animation-duration: la durata dell'animazione, la durata totale dell'animazione dall'inizio alla fine.
  • animation-timing-function: imposta la velocità di animazione (linear | ease | ease-in | ease-out | ease-in-out | cubic-bezier).
  • animation-delay: il ritardo prima che la nostra animazione cominci.
  • animation-iteration-count: quante volte scorrerà attraverso l'intera durata dell'animazione.
  • animation-direction: fornisce la possibilità di cambiare la direzione del loop, dall'inzio alla fine, oppure dalla fine all'inizio, oppure entrambi.
  • animation-fill-mode: specifica quale stile sarà applicato all'elemento quando la nostra animazione è finita (none | forwards | backwards | both)

Per esempio:

oppure:

Il codice sopra riportato creerà un effetto lampeggiante, con 1 secondo di ritardo, 4 secondi di durata totale dell'animazione, con direzioni alternate e con infinite iterazioni lineari.

Aggiungiamo i Vendor Prefixes

Dobbiamo utilizzare i prefissi del browser specifici per garantire il miglior supporto dal browser possibile. Si applicano i prefissi standard:

  • Chrome & Safari: -webkit-
  • Firefox: -moz-
  • Opera: -o-
  • Internet Explorer: -ms-

Una proprietà di animation con i prefissi vendor sarà simile a:

insieme a @keyframes:

Per motivi di leggibilità, durante questo tutorial, continuerò ulteriormente senza l'utilizzo di prefissi, ma la versione finale li comprendono e vorrei incoraggiarvi a utilizzarli nel vostro codice CSS.

Per scoprire altro riguardo ai prefissi vendor, potete dare un'occhiata a http://css3please.com/, che è un buon sito per quanto riguarda le risorse dei prefissi vendor.

Molteplici Animazioni

Potete aggiungere più animazioni utilizzando la virgola come separatore. Diciamo che vogliamo aggiungere un'ulteriore rotazione al nostro elemento tutsFade, lo faremo dichiarando ulteriori @keyframes e dopo legarli assieme al nostro elemento: 

Tutorial: Da Quadrato a Cerchio

Partiamo subito e creiamo una semplice transizione di forma; un'animazione da quadrato a cerchio usando i principi elencati precedentemente. Avremo in totale 5 fasi e per ognuna di esse definiremo il raggio del bordo, una rotazione e un colore di sfondo differente al nostro elemento. Basta parlare e cominciamo a scrivere un po' di codice.

Elementi Basilari

Per prima cosa, creiamo il markup, l'elemento da animare. Non andiamo nemmeno a perdere tempo con i nomi delle classi, useremo un semplice div per il momento:

Quindi, utilizziamo un elemento selettore (div {}) e aggiungiamogli uno stile di default:

Dichiarare i Keyframes

Ora prepariamo @keyframes, che chiameremo square-to-circle, e le cinque fasi

Dobbiamo definire lo stile all'interno di ogni fase, quindi cominciamo dichiarando il border-radius per ogni angolo del quadrato:

Inoltre possiamo dichiarare un background-color diverso per ogni fase.

Per far si che la nostra animazione colpisca davvero, oltre al border-radius e al background-color ruotiamo il div, così facendo aggiungeremo un po' di interesse visivo.

Applicare l'Animazione

Avendo definito la nostra animazione "square-to-circle", dobbiamo applicarlo al div:

Qui si può notare che abbiamo aggiunto una proprietà di animation che si può riassumere:

  • Il nome dell'animazione è square-to-circle.
  • La durata dell'animazione è di 2s.
  • Il ritardo dell'animazione è 1s.
  • Il contatore dell'iterazione dell'animazione è infinite, quindi andrà avanti indefinitamente.
  • E la direzione dell'animazione è alternate, quindi comincerà dall'inizio alla fine, dopo dalla fine all'inizio, di nuovo alla fine e così via.

L'utilizzo Spettacolare della Funzione Tempo

Un ultimo valore che possiamo aggiungere alla proprietà della animazione è animation-timing-function.  Questo determinerà la velocità, l'accelerazione e la decelerazione del nostro movimento. Questa funzione può essere un valore molto dettagliato, il che è strano calcolarlo manualmente, ma ci sono una montagna di siti gratis che forniscono risorse e modifiche live per le funzioni delle animazioni temporali.

Uno di questi strumenti è il CSS Easing Animation Tool, quindi usiamo quello per calcolare la nostra funzione temporale.

Vorrei aggiungere un effetto elastic alla nostra animazione square-to-circle, utilizzando una funzione cubic-bezier.

Dopo averci giocato un po' ed aver generato una specie di curva bezier, aggiornate il valore della funzione di animazione temporale usando il frammento di codice fornito.

Il codice finale, senza aver utilizzato i prefissi vendor ( -webkit- , -moz--ms-, -o- ) si presenterà in questo modo:

Un'Ultima Cosa

Tutto funziona correttamente nei browser moderni, ma Firefox ha un brutto vizio di renderizzare gli oggetti trasformati male. Date un'occhiata a queste linee frastagliate per capire cosa intendo:

Fortunatamente, c'è una soluzione a questo problema. Aggiungete il seguente contorno trasparente al vostro div e Firefox lo renderizzerà perfettamente!

Conclusione

E' tutto! Abbiamo utilizzato la sintassi dell'animazione CSS per creare una semplice animazione a ripetizione.

Supporto dei Browser

Per maggiori informazioni per quanto riguarda il supporto dei browsers per le animazioni CSS, date un'occhiata a Can I use.. ma in poche parole, supportate i browser includendo: Firefox 5+, IE 10+, Chrome, Safari 4+, Opera 12+

Risorse:

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.