CSS  »  Articoli  »  Effetti con CSS 

Barra di avanzamento animata solo con i CSS

di: Alen Grakalic     15 Luglio 2008

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.

Guide CSS

Responsive Desing, la guida

Progettare siti da fruire su dispositivi diversi è imprescindibile...

Guida CSS3

Scoprire e usare al meglio tutte le novità dell'ultima versione dei...

Guida CSS Tecniche essenziali

Testo, immagini, layout, form, liste, tabelle: soluzioni pronte per...

Altre guide

Newsletter @CSS

Ogni mercoledì, direttamente nella tua e-mail: guide, articoli, tutorial, FAQ e approfondimenti tecnici su CSS e Web Design.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti