CSS: creare un istogramma

CSS: creare un istogramma

I CSS, per loro stessa definizione, sono un linguaggio che permette di controllare la presentazione di una pagina web. In tal senso i fogli di stile possono essere utilizzati anche per realizzare effetti puramente grafici. In questo articolo vedremo come realizzare un istogramma con i soli CSS, ricordando al contempo che si tratta unicamente di un layout dimostrativo.

Partiamo da una semplice struttura HTML:


<div id="grafico">
<p id="ay">y</p>
<div id="contenitore">
<p class="barra"><span id="b1"></span></p>
<p class="barra"><span id="b2"></span></p>
<p class="barra"><span id="b3"></span></p>
<p class="barra"><span id="b4"></span></p>
<p class="barra"><span id="b5"></span></p>
<p class="barra"><span id="b6"></span></p>
</div>
<p id="ax">x</p>
</div>

Come si evince dal precedente codice, gli unici contenuti realmente inseriti saranno i nomi dei due assi cartesiani. L'istogramma vero e proprio verrà generato dalla formattazione che segue:


#grafico {
width: 60%;
height: 300px;
margin: 0;
padding: 0;
}

#ay {
width: 1em;
float: left;
font-weight: bold;
margin: 0;
}

#contenitore {
float: left;
width: 90%;
margin: 0;
height: 300px;
border-left: 1px solid #000;
border-bottom: 1px solid #000;
}

.barra {
float: left;
width: 10%;
height: 300px;
margin: 0 0 0 0.5em;
display: inline;
background: #ccc;
color: #000;
}


#b1, #b2, #b3, #b4, #b5, #b6 {
margin: 0;
display: block;
width: 100%;
background: #fff;
color: #000;
}

#b1 {height: 5px;}
#b2 {height: 20px;}
#b3 {height: 35px;}
#b4 {height: 40px;}
#b5 {height: 55px;}
#b6 {height: 70px;}

#ax {
margin: 0;
text-align: right;
font-weight: bold;
clear: both;
width: 90%;
}

Abbiamo usato la proprietà float per allineare orizzontalmente gli elementi. Si noti come tutti gli elementi del grafico abbiamo un'altezza dichiarata di 300px. Dichiarare un'altezza per un contenitore di elementi flottati ci permette di mantenere tali elementi al suo interno. La dichiarazione display: inline data per la classe .barra impedisce ad Internet Explorer 6 (ed inferiori) di raddoppiare erroneamente il margine orizzontale corrispondente alla direzione di floating. Per realizzare l'effetto grafico della diversa altezza delle barre abbiamo inserito un elemento span in ciascuna barra assegnandogli i seguenti stili:


#b1, #b2, #b3, #b4, #b5, #b6 {
margin: 0;
display: block;
width: 100%;
background: #fff;
color: #000;
}

#b1 {height: 5px;}
#b2 {height: 20px;}
#b3 {height: 35px;}
#b4 {height: 40px;}
#b5 {height: 55px;}
#b6 {height: 70px;}

Il colore di sfondo di tali elementi vuoti coincide con quello della finestra di visualizzazione. L'altezza incrementale degli elementi crea l'effetto voluto, effetto che non si sarebbe potuto ottenere se avessimo usato i bordi superiori degli elementi con classe .barra, in quanto questi ultimi avrebbero superato l'altezza complessiva del contenitore (300px).

Potete visionare l'esempio finale in questa pagina.

Torna su