Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Barra di avanzamento animata solo con i CSS

Tecnica d'impatto basata sulla vecchia, cara GIF animata
Tecnica d'impatto basata sulla vecchia, cara GIF animata
Link copiato negli appunti

Questa è la traduzione dell'articolo Pure CSS Animated Progress Bar di Alen Grakalic pubblicato originariamente su CSS Globe il 27 Marzo 2008. La traduzione viene qui presentata con il consenso dell'editore e dell'autore.

Ecco una semplice dimostrazione di come si può creare una barra di avanzamento animata usando solo i CSS. La tecnica è molto semplice. Abbiamo bisogno di tre elementi, un container e due elementi annidati.

Diamo subito uno sguardo alla demo e scarichiamo il file zip con tutto il materiale necessario.

L'idea

Inseriremo una bella immagine di sfondo nell'elemento contenitore e definiremo dimensioni fisse per la laghezza (width) e l'altezza (height). Il primo elemento figlio (uno span) fungerà da barra di avanzamento. Posizioneremo in maniera assoluta il secondo elemento figlio annidato (un em), sopra la barra di avanzamento e lo sposteremo sulla sinistra con il valore che ci serve. L'elemento em ha lo stesso background del contenitore, così si crea l'effetto di una barra di avanzamento che si ferma ad una certa percentuale.

Figura 1. Schema di funzionamento della tecnica
schema

Il markup

Per rispettare il più possibile la semantica ho usato una lista di definizione (dl) per definire i vari valori. Per una barra singola è possibile usare qualunque elemento.

<dd>
<span><em style="left:100px">50%</em></span>
</dd>

Ho deciso di usare uno stile inline per l'elemento <em> e per la definizione del suo posizionamento. È più conveniente scrivere entrambi i valori nello stesso posto una volta sola.

L'animazione

Come viene ottenuto l'effetto animato? Usando una GIF animata! Le ricordate? Lo span ha come sfondo un'immagine GIF della larghezza di 200px che si anima da 0 a 200px. Non importa che percentuale si usa, l'immagine avanza e poi si ferma. L'effetto dello stop ad una certa percentuale è ottenuto attraverso l'uso dell'elemento <em> come ho detto prima.

Posizionamento dell'elemento <em>

Nel mio esempio uso una barra di avanzamento larga 200px. Anche l'elemento <em> è largo 200px. Così ogni punto percentuale equivale a 2px. Se vogliamo spostare con accuratezza l'elemento <em> abbiamo bisogno di moltiplicare le percentuali per 2. Per esempio, il 50% corrisponde ad uno spostamento sulla sinistra dell'elemento <em> di 100px, 24% a 48px, 75% a 150px, etc.

Ti consigliamo anche