logo Dove iniziare Linguaggi Aiuto Blog
Home Dove iniziare Linguaggi Aiuto e Supporto Info e Blog

Le ombre in CSS

Le ombre sono spesso utilizzate per rendere più visibile e far risaltare gli elementi. In questa lezione, vediamo due proprietà CSS che ti permettono di aggiungere le ombre a elementi e testo: box-shadow e text-shadow

Aggiungere ombre agli elementi

La proprietà box-shadow viene utilizzata per applicare un'ombra a un elemento. Può essere utilizzata su qualsiasi elemento all'interno della pagina (come <div>, <p>, <section>, ecc.).

La sintassi è box-shadow: offset-x offset-y raggio-sfocatura raggio-diffusione colore

Ecco come inserire i parametri di box-shadow:

  • offset-x: la distanza orizzontale dell'ombra dall'elemento. Può essere positiva o negativa.
  • offset-y: la distanza verticale dell'ombra dall'elemento. Può essere positiva o negativa.
  • raggio-sfocatura (facoltativo): la quantità di sfocatura dell'ombra. Maggiore è il valore, più sfocata sarà l'ombra.
  • raggio-diffusione (facoltativo): la dimensione dell'ombra. Valori positivi allargano l'ombra, mentre valori negativi la riducono.
  • colore (facoltativo): il colore dell'ombra. Se non specificato, viene utilizzato il colore di default (solitamente nero).

Creare un'ombra semplice

Per prima cosa, vediamo come creare una semplice ombra:

<div class="ombra-semplice">Ombra semplice</div>

<style>
.ombra-semplice {
  width: 200px;
  height: 100px;
  background-color: lightblue;
  box-shadow: 10px 10px; /* offset-x e offset-y */
}
</style>

In questo esempio, l'ombra è posizionata a 10 pixel verso destra (offset-x) e 10 pixel verso il basso (offset-y) rispetto all'elemento. Non è stata specificata né la sfocatura né il colore, quindi l'ombra apparirà perfettamente visibile e sarà nera per default. Ecco come verrà visualizzata:

Ombra semplice

Creare un'ombra con sfocatura

Nella maggior parte dei casi, quando si crea un'ombra deve essere sfocata (e non così spessa come nell'esempio precedente). Per fare ciò, aggiungiamo un terzo valore:

<div class="ombra-sfocata">Ombra sfocata</div>

<style>
.ombra-sfocata {
  width: 200px;
  height: 100px;
  background-color: lightcoral;
  box-shadow: 10px 10px 20px; /* Anche il raggio della sfocatura */
}
</style>

Qui l'ombra è posizionata a 10 pixel a destra e 10 pixel in basso, ma con un raggio di sfocatura di 20 pixel. Questo significa che l'ombra sarà più morbida e meno definita rispetto all'ombra del primo esempio. Ecco come si vede ora:

Ombra sfocata

Colorare un'ombra

Per default l'ombra è di colore nero. Tuttavia, è possibile scegliere un diverso colore. Vediamo come farlo nell'esempio:

<div class="ombra-colorata">Ombra colorata</div>

<style>
.ombra-colorata {
  width: 200px;
  height: 100px;
  background-color: DeepSkyBlue;
  box-shadow: 10px 10px 15px 5px rgba(192, 192, 192, 0.5); /* colore */
}
</style>

In questo esempio, l'elemento ha un'ombra con un offset di 10 pixel a destra e 10 pixel in basso, un raggio di sfocatura di 15 pixel e un raggio di diffusione di 5 pixel. Il colore dell'ombra è un grigio trasparente (rgba(255, 0, 0, 0.5)), che significa che l'ombra apparirà grigia con una trasparenza del 50%. Abbiamo parlato di come funziona RGBA nella lezione sui colori. Ecco come appare ora l'elemento:

Ombra colorata

Creare un'ombra all'interno dell'elemento

Con la proprietà box-shadow di CSS, è possibile inserire l'ombra all'interno dell'elemento, inserendo il valore inset:

<div class="ombra-interna">Ombra interna</div>

<style>
.ombra-interna {
  width: 200px;
  height: 100px;
  background-color: lightyellow;
  box-shadow: inset 10px 10px 20px rgba(0, 0, 0, 0.5); /* inset */
}
</style>

L'uso della parola chiave inset cambia l'ombra in un'ombra interna, che appare all'interno dei bordi dell'elemento anziché all'esterno. Ecco come si vede:

Ombra interna

Creare delle ombre multiple

Le ombre multiple ti permettono di applicare più ombre ad uno stesso elemento. In questo caso, le due ombre si sovrapporranno. Ad esempio:

<div class="ombre-multiple">Ombre multiple su un box</div>

<style>
.ombre-multiple {
  width: 200px;
  height: 100px;
  background-color: lightblue;
  box-shadow: 5px 5px 10px rgba(0, 255, 0, 0.5), -5px -5px 10px rgba(255, 0, 0, 0.2);
}
</style>

Nell'esempio, la prima ombra è posizionata a 5 pixel a destra e 5 pixel in basso, con un raggio di sfocatura di 10 pixel e un colore verde semitrasparente. La seconda ombra è posizionata a 5 pixel a sinistra e 5 pixel in alto, con le stesse dimensioni di sfocatura ma un colore rosso meno opaco. Ecco come appare:

Ombre multiple su un box

Aggiungere ombre ai testi

Oltre agli elementi, CSS permette di aggiungere l'ombra anche alle scritte all'interno della pagina web. Lo si può fare utilizzando la proprietà CSS chiamata text-shadow. Ecco la sintassi da usare:

text-shadow: offset-x offset-y raggio-sfocatura colore

Vediamo ora i diversi valori da usare:

  • offset-x: la distanza orizzontale dell'ombra dal testo. Può essere positiva o negativa.
  • offset-y: la distanza verticale dell'ombra dal testo. Può essere positiva o negativa.
  • raggio-sfocatura (facoltativo): la quantità di sfocatura dell'ombra. Maggiore è il valore, più sfocata sarà l'ombra.
  • colore (facoltativo): il colore dell'ombra. Se non specificato, viene utilizzato il colore di default (solitamente nero).

Per creare una semplice ombra ad un testo, facciamo in questo modo:

<p class="ombra-testo">Ombra semplice sul testo</p>

<style>
.ombra-testo {
  font-size: 24px;
  text-shadow: 2px 2px; /* offset-x e offset-y */
}
</style>

L'ombra del testo è posizionata a 2 pixel a destra e 2 pixel in basso rispetto al testo. Non sono stati specificati né il raggio di sfocatura né il colore, quindi l'ombra sarà nera e con opacità predefinita.

Creare un'ombra colorata e con sfocatura

Allo stesso modo di box-shadow, possiamo specificare il raggio della sfocatura dell'ombra e il colore. Ad esempio, ecco come creare un'ombra grigia:

<p class="ombra-testo">Ombra sfocata sul testo</p>

<style>
.ombra-testo {
  font-size: 24px;
  text-shadow: 2px 2px 5px grey; /* raggio della sfocatura e colore */
}
</style>

L'ombra del testo è posizionata a 2 pixel a destra e 2 pixel in basso con un raggio di sfocatura di 5 pixel, il che rende l'ombra più morbida e sfumata. Appare in questo modo:

Ombra sfocata sul testo

Creare delle ombre multiple al testo

Si possono aggiungere più ombre allo stesso testo, semplicemente separandole con la virgola:

<p class="ombre-testo">Ombre multiple sul testo</p>

<style>
.ombra-testo {
  font-size: 24px;
  text-shadow: 2px 2px 2px red, -2px -2px 2px blue;
}
</style>

La prima ombra è rossa e posizionata a 2 pixel a destra e in basso, mentre la seconda ombra è blu e posizionata a 2 pixel a sinistra e in alto. In questo modo, le due ombre si sovrappongono.

Prova!Completa gli spazi vuoti con il testo appropriato.
/* Crea un'ombra al div con CSS */
div {
  : 3px 3px 12px 5px rgba(192, 192, 192, 0.5);
}

Prova!Scegli l'opzione corretta tra quelle elencate.
/* Aggiungi l'ombra ad un testo con CSS */
p {
  ___________: 2px 2px red;
}