back to top

CSS: la proprietà z-index

Abbiamo visto come, attraverso i CSS, possiamo gestire ogni aspetto della presentazione degli elementi della pagina; nella precedenti lezioni abbiamo imparato manipolare la proprietà display e come posizionare gli elementi nella pagina. In questa lezione vedremo come gestire un aspetto particolare del rapporto tra i vari elementi della pagina, cioè le eventuali sovrapposizioni.

La sovrapposizione tra elementi della pagina è una eventualità che può verificarsi solo se è stata utilizzata la proprietà position, in caso contrario, infatti, la logica sequenziale di posizionamento naturale dei vari elementi della pagina rende impossibile questa eventualità.

Ma quando due elementi entrano in collisione? semplicemente quando occupano, in parte o in toto, la medesima porzione di pagina. Al fine di risolvere una similue situazione si introduce, all’interno di un contesto bidimensionale, una terza dimensione: la profondità!

La profondità è gestita mediante l’asse "z", il quale si aggiunge a "x" e "y" che rappresentano, rispettivamente, l’asse orizzontale e quello verticale della nostra pagina. Il posizionamento lungo questo terzo asse (z) è gestito mediante la proprietà z-index.

z-index

Il funzionamento di z-index è molto semplice: l’elemento col valore numerico maggiore si sovrappone a quelli con valori minori. In pratica possiamo dire che maggiore è il valore di z-index è più superficiale sarà il suo posizionamento lungo l’asse z.

Da un punto di vista teorico dobbiamo ricordare che questa proprietà può assumere i seguenti valori:

  • auto – la sovrapposizione tra gli elementi è affidata al browser che si comporterà secondo regole prestabilite;
  • valore numerico – gli elementi con numero maggiore di z-index sovrastano quelli con z-index minore; sono ammessi anche valori negativi.

Vediamo un esempio pratico in cui tre box, delle medesime dimensioni, si sovrappongono in modo parziale:

/* definisco il contenitore */
div.contenitore
{
  position: relative;
  width: 300px;
  height: 300px;
}
/* definisco alcune caratteristiche comuni a tutti e tre i DIV presenti nel contenitore */
.contenitore > div
{
  position: absolute;
  width: 100px;
  height: 100px;   
}
/* posiziono il box N.1 */
div.box1
{
  bottom: 0px;
  right: 0px;
  z-index: 0;
  background-color: red;
}
/* posiziono il box N.2 */
div.box2
{
  bottom: 60px;
  right: 40px;
  z-index: 1;
  background-color: blue;
}
/* posiziono il box N.3 */
div.box3
{
  bottom: 120px;
  right: 80px;
  z-index: 2;
  background-color: yellow;
}

Per meglio comprendere l’effetto di z-index abbiamo applicato, a ciascuno dei tre box, un colore di sfondo differente. Questo il risultato prodotto dal nostro codice:

esempio di z-index

Come possiamo vedere:

  • il box n.3 è quello più superficiale (il suo valore di z-index è 2);
  • il box n.2 (il suo valore di z-index è 1) si sovrappone al n.1 ma è sovrastato da n.3;
  • il box n.1, infine, è quello più profondo in quanto ha il valore minore di z-index.
Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).