back to top

Box-shadow: gestire le ombre nei box con CSS3

Un’altra interessante novità introdotta da CSS3 consiste nella possibilità di applicare un’ombra ad un box mediante la proprietà box-shadow. Firefox, Chrome, Safari e Opera la supportano senza problemi, Internet Explorer solo dalla versione 9 in avanti.

Cominciamo con un primo esempio per prendere dimestichezza con la proprietà box-shadow:

div {
  width: 220px;
  padding: 5px;
  background: #99CCFF;
  box-shadow: 10px 10px 5px #888888;
}

Prova il codice

Il div a cui si applica questa regola di stile si presenta come nella figura che segue:

un box con una ombra

Prima di proseguire con la analisi della sintassi di box-shadow, voglio fare una precisazione: se un box ha un bordo arrotondato, anche l’ombra sarà arrotondata con lo stesso raggio definito per l’angolo del box.

La sintassi di box-shadow

Analizziamo più nel dettaglio la sintassi della proprietà box-shadow di CSS3. Questa proprietà richiede due parametri obbligatori e quattro opzionali. I parametri obbligatori sono:

  • h-shadow: rappresenta la posizione orizzontale dell’ombra
  • v-shadow: rappresenta la posizione verticale dell’ombra

dei valori positivi per queste proprietà indicano lo spostamento dell’ombra verso il basso rispetto al bordo superiore e inferiore del box e verso destra rispetto al bordo destro e sinistro. Invece, dei valori negativi indicano uno spostamento verso l’alto e verso sinistra.

Correggendo la regola di stile vista prima con valori negativi per h-shadow e v-shadow

div {
  width: 220px;
  padding: 5px;
  background: #99CCFF;
  box-shadow: -10px -10px 5px #888888;
}

Così facendo otteniamo la figura che segue:

un box con una ombra con valori h-shadow e v-shadow negativi

I parametri opzionali, invece, sono i seguenti:

  • blur: indica la distanza dal bordo del box a cui inizia la sfocatura dell’ombra;
  • spread: indica in pixel la dimensione dell’ombra;
  • color: indica il colore dell’ombra;
  • inset: indica se l’ombra deve essere interna (inset). Il valore predefinito, outset, crea un’ombra esterna;

Proviamo ad aumentare la sfocatura e la dimensione della nostra ultima ombra (negli esempi precedenti, in realtà, non avevamo specificato una dimensione, ma solo la sfocatura)

div {
  width: 220px;
  padding: 5px;
  background: #99CCFF;
  box-shadow: -10px -10px 15px 15px #888888;
}

Ed ecco il risultato

aumentare sfocatura e dimensione dell'ombra con CSS3

Ombra interna al box con inset

Proviamo ora a portare l’ombra all’interno del box. Nella regola precedente, modifichiamo solo la proprietà box-shadow aggiungendo la keyword inset:

box-shadow: -10px -10px 15px 15px #888888 inset;
un'ombra interna con CSS3

Notate che, con una ombra interna, i valori negativi per h-shadow e v-shadow creano l’ombra sui bordi destro e inferiore.

Creare un’ombra sui quattro lati del box

Per applicare l’ombra sui quattro lati bisogna porre a zero le proprietà h-shadow e v-shadow, quindi lavorare con blur e spread per gestire la dimensione dell’ombra e della sua sfocatura (anche in questo caso, proponiamo solo la modifica alla proprietà box-shadow).

box-shadow: 0px 0px 15px 10px #888888;

Ed ecco il risultato.

un'ombra su quattro lati del box con CSS3
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).