Transition CSS: come usare la proprietà per le animazioni

Transition CSS: come usare la proprietà per le animazioni

Con CSS3 sono arrivate parecchie funzionalità nuove per costruire effetti notevoli, e una delle più utili è la proprietà transition.

La proprietà transition è un modulo introdotto da CSS3. Serve a creare un effetto di cambiamento dinamico su un tag HTML o su una classe, con una sintassi semplice:

css
transition: property duration timing-function delay;

Le transizioni CSS3 sono un ottimo modo per aggiungere un po’ di animazione a un sito senza scrivere una riga di JavaScript. Prima di cominciare, puoi dare un’occhiata a un tutorial CSS che ho scritto e che sfrutta questa proprietà:
Tutorial – Creare una card in CSS

La proprietà

Prima di tutto, perché transition funzioni devi definire la proprietà standard su cui verrà applicata. Nel nostro esempio mettiamo una transizione su background-color. Per scrivere la proprietà da sola basta questo:

css
transition-property: background-color;

La transizione

Una volta scelta la proprietà, servono un valore di partenza e un valore di arrivo. Nel nostro esempio c’è un colore iniziale, poi un valore finale legato a un’altra condizione.
Qui impostiamo transition su background-color, poi il valore iniziale di background-color sull’elemento #element, e infine il valore finale applicato quando l’utente passa il mouse sull’elemento, con #element:hover:

css
#element {
    transition-property:background-color;
    background-color:red;
}
#element:hover {
    background-color:blue;
}

La durata dell’animazione

Ora che abbiamo la proprietà da animare con i suoi valori di partenza e di arrivo, resta da definire la durata della transizione. Si fa indicando una durata in secondi o in millisecondi, così:

css
#element {
    transition-property:background-color;
    transition-duration: 0.2s;
    background-color:red;
}
#element:hover {
    background-color:blue;
}

Il div #element cambierà quindi background-color nell’arco di 200 millisecondi (0,2 secondi)

La proprietà transition-timing-function

Questo codice basta a creare una transizione, ma possiamo usare anche la proprietà transition-timing-function. Serve a cambiare il modo in cui la transizione si svolge. Di default la transizione segue la curva ease. Puoi però scegliere uno degli altri effetti nativi oppure passare una curva di Bézier per costruire il tuo effetto.

css
transition-timing-function: ease;
transition-timing-function: ease-in;
transition-timing-function: ease-out;
transition-timing-function: ease-in-out;
transition-timing-function: linear;
transition-timing-function: step-start;
transition-timing-function: step-end;

transition-timing-function: cubic-bezier(0.1, 0.5, 1.0, 0.1);

Ecco il risultato nel nostro esempio:

css
#element {
    transition-property:background-color;
    transition-duration: 0.2s;
    transition-timing-function:ease-in-out;
    background-color:red;
}
#element:hover {
    background-color:blue;
}

Ritardare la transizione

Come per la durata, la proprietà transition-delay permette di far partire l’effetto con un ritardo.

css
transition-delay: 1s;
css
#element {
    transition-property:background-color;
    transition-duration: 0.2s;
    transition-timing-function:ease-in-out;
    transition-delay: 1s;
    background-color:red;
}
#element:hover {
    background-color:blue;
}

···

CSS

Damien Flandrin Sviluppatore web dal 2010, creatore di Gekkode e di Email Impact. Ogni articolo è testato su un progetto reale prima della pubblicazione. Contatti
Newsletter

I nuovi test, tutorial e progetti, via e-mail.

Test riproducibili, codice versionato, risultati datati. Mai spam.