Mercato
Prezzi
AccediInizia
Guida praticaCSS e web
CSS e web

CSS box shadow: ombre morbide e a strati che sembrano vere

Un solo box-shadow grigio è il modo più rapido per far sembrare un’interfaccia un modello. Le ombre vere sono più ombre insieme, tinte, e più discrete di quanto pensi.

GradientlyAccount Gradiently verificato·1 ottobre 2026·6 min di lettura
Copertina: Tape Cliff · GR·CY1K·VC

In breve

  • La proprietà CSS box shadow accetta una parola chiave inset facoltativa, due scostamenti, un raggio di sfocatura, un raggio di diffusione e un colore.
  • Una sola box shadow sembra artificiale perché gli oggetti reali proiettano insieme un’ombra di contatto netta e una più ampia e morbida.
  • Sovrapporre da tre a cinque ombre, ciascuna con circa il doppio di scostamento e sfocatura della precedente e bassa opacità, produce un’ombra morbida e credibile.
  • Tingere l’ombra verso la tonalità dello sfondo sembra più naturale del nero puro su superfici colorate o calde.
  • Animare box-shadow ridisegna a ogni fotogramma, quindi fai invece comparire con l’opacità uno pseudo-elemento che porta l’ombra più grande.
In questa pagina
Sintassi di box-shadowPerché una sola ombra sembra fintaCome sovrapporre le box shadowUna scala di elevazione per un’interfacciaOmbre su sfondi colorati e scuriAnimare box-shadow senza scattiQuando saltare l’ombra

Un CSS box shadow si scrive box-shadow: 0 4px 12px rgb(0 0 0 / 0.15): uno scostamento orizzontale, uno verticale, un raggio di sfocatura, una diffusione facoltativa e un colore. Quella singola ombra va bene per un prototipo veloce, ma raramente sembra vera. Le ombre che convincono l’occhio sono a strati: più ombre su un elemento, ciascuna più grande e più tenue della precedente, tinte per adattarsi alla superficie sotto.

Sintassi di box-shadow

css
/* inset? | offset-x | offset-y | blur | spread | color */
.card { box-shadow: 0 4px 12px 0 rgb(0 0 0 / 0.15); }

/* Negative spread tucks the shadow under the box */
.card { box-shadow: 0 12px 24px -8px rgb(0 0 0 / 0.25); }

/* Inset: a shadow inside the box, like a pressed well */
.well { box-shadow: inset 0 2px 4px rgb(0 0 0 / 0.12); }

/* Spread only: a hairline that follows border-radius */
.chip { box-shadow: 0 0 0 1px rgb(15 23 42 / 0.08); }

/* Several shadows, comma separated, first on top */
.card { box-shadow: 0 1px 2px rgb(0 0 0 / 0.1), 0 8px 16px rgb(0 0 0 / 0.08); }
L’ombra segue sempre border-radius, ed è per questo che un’ombra con sola diffusione fa una bella linea sottile arrotondata senza cambiare il layout.
insetDisattivato

Effetto

Disegna l’ombra dentro il bordo invece che fuori
Scostamento x e y

Predefinito

Obbligatorio

Effetto

Sposta l’ombra. Luce dall’alto significa una y positiva
Sfocatura

Predefinito

0

Effetto

Ammorbidisce il bordo. Valori più grandi allargano la sfumatura
Diffusione

Predefinito

0

Effetto

Ingrandisce o riduce l’ombra prima della sfocatura. Il negativo la ritira
Colorecurrentcolor

Effetto

Usa un colore con alfa; le ombre opache sembrano adesivi
ValorePredefinitoEffetto
insetDisattivatoDisegna l’ombra dentro il bordo invece che fuori
Scostamento x e yObbligatorioSposta l’ombra. Luce dall’alto significa una y positiva
Sfocatura0Ammorbidisce il bordo. Valori più grandi allargano la sfumatura
Diffusione0Ingrandisce o riduce l’ombra prima della sfocatura. Il negativo la ritira
ColorecurrentcolorUsa un colore con alfa; le ombre opache sembrano adesivi
La diffusione è il valore che la maggior parte salta e quello che risolve di più. Una piccola diffusione negativa impedisce a una grande sfocatura di uscire dai lati.

Perché una sola ombra sembra finta

Appoggia un libro su un tavolo e guarda la sua ombra. Proprio al bordo dove tocca, l’ombra è scura e netta. Più lontano diventa ampia e tenue, perché la luce avvolge l’oggetto da molte direzioni. Un solo box-shadow può essere solo una di queste cose alla volta: stretta e dura, oppure ampia e sfocata. In entrambi i casi l’occhio nota che manca qualcosa.

Ombra singola

  • Una sfocatura media in nero al 25 per cento
  • Alone grigio tutto intorno alla card
  • Difficile capire a che altezza fluttua la card
  • Sembra sporca sugli sfondi colorati

Ombra a strati

  • Quattro ombre, ciascuna più tenue e più ampia
  • Densa vicino al bordo, leggera lontano
  • L’altezza si legge a colpo d’occhio
  • Tinta per stare in modo naturale sulla sua superficie

Come sovrapporre le box shadow

Il metodo è semplice: parti piccolo e netto, poi raddoppia scostamento e sfocatura a ogni strato in più, tenendo ogni strato tenue. Le opacità si sommano dove gli strati si sovrappongono, quindi i singoli valori possono essere sorprendentemente bassi.

  1. 1

    Parti da un’ombra di contatto

    0 1px 1px a circa l’8 per cento di opacità. È la linea scura subito sotto il bordo.

  2. 2

    Raddoppia a ogni strato

    Poi 0 2px 2px, 0 4px 4px, 0 8px 8px. Scostamento e sfocatura crescono insieme, quindi la luce sembra venire dall’alto.

  3. 3

    Tieni ogni strato tenue

    Tra il 5 e il 10 per cento ciascuno. Se il risultato sembra pesante, togli lo strato più grande prima di scurire qualsiasi cosa.

  4. 4

    Tingi il colore

    Sostituisci il nero con una versione profonda della tonalità dello sfondo, come un blu notte su pagine blu o un marrone su un crema.

css
:root {
  /* Shadow colour as channels, so opacity can vary per layer */
  --shadow-color: 222 47% 11%;

  --shadow-sm:
    0 1px 1px hsl(var(--shadow-color) / 0.08),
    0 2px 2px hsl(var(--shadow-color) / 0.06);

  --shadow-md:
    0 1px 1px hsl(var(--shadow-color) / 0.08),
    0 2px 2px hsl(var(--shadow-color) / 0.07),
    0 4px 4px hsl(var(--shadow-color) / 0.06),
    0 8px 8px hsl(var(--shadow-color) / 0.05);

  --shadow-lg:
    0 1px 1px hsl(var(--shadow-color) / 0.07),
    0 2px 2px hsl(var(--shadow-color) / 0.07),
    0 4px 4px hsl(var(--shadow-color) / 0.06),
    0 8px 8px hsl(var(--shadow-color) / 0.06),
    0 16px 16px hsl(var(--shadow-color) / 0.05),
    0 32px 32px hsl(var(--shadow-color) / 0.04);
}

.card { box-shadow: var(--shadow-md); }
.dialog { box-shadow: var(--shadow-lg); }
Una scala di elevazione a tre livelli come proprietà personalizzate. Cambia --shadow-color una volta e ogni ombra del sistema la segue.

Memorizzare le ombre come variabili le trasforma in design token, il che mantiene coerenti ogni card, menu e finestra. Variabili CSS per i temi e design token mostrano come collegarle a un tema completo.

Una scala di elevazione per un’interfaccia

L’ombra è un segnale di altezza, quindi dovrebbe significare la stessa cosa ovunque. Scegli tre o quattro livelli e assegnali a dei compiti. Tutto ciò che fluttua più in alto ha un’ombra più grande e morbida, mai solo più scura.

0nessuna, o una linea sottile di diffusione 1px

Usalo per

Campi di input, righe di tabella, card piatte su una pagina tinta
1--shadow-sm

Usalo per

Card a riposo, pulsanti che devono sembrare premibili
2--shadow-md

Usalo per

Card al passaggio del mouse, menu a tendina, popover
3--shadow-lg

Usalo per

Finestre di dialogo, pannelli, tutto ciò che sta su una pagina oscurata
LivelloTokenUsalo per
0nessuna, o una linea sottile di diffusione 1pxCampi di input, righe di tabella, card piatte su una pagina tinta
1--shadow-smCard a riposo, pulsanti che devono sembrare premibili
2--shadow-mdCard al passaggio del mouse, menu a tendina, popover
3--shadow-lgFinestre di dialogo, pannelli, tutto ciò che sta su una pagina oscurata
Quattro livelli coprono quasi ogni interfaccia. Con di più le persone non riescono più a distinguerli.

Ombre su sfondi colorati e scuri

Le ombre nere pure diventano grigie e sporche su una superficie colorata, nello stesso modo in cui il nero mescolato a una vernice la spegne. Prendi invece il colore dell’ombra dallo sfondo: un’ombra verde acqua profonda su una pagina menta, un prugna scuro su una lilla. Sugli sfondi a gradiente, scegli lo stop più scuro del gradiente e usalo a bassa opacità.

Tre colori di pagina, ciascuno con il colore d’ombra che gli si addice. Usa i toni d’ombra dal 5 al 10 per cento per strato.

In modalità scura le ombre quasi spariscono, perché c’è poca luce da bloccare. Mostra l’altezza rendendo invece le superfici rialzate un po’ più chiare, e tieni una linea sottile tenue sul bordo. Design per la modalità scura passa in rassegna i colori delle superfici. Per i pannelli che fluttuano sulle immagini, un backdrop filter spesso separa i livelli meglio di un’ombra più pesante.

Animare box-shadow senza scatti

Cambiare box-shadow al passaggio del mouse costringe il browser a ridisegnare l’ombra a ogni fotogramma della transizione. Su un solo pulsante va bene. Su una griglia di cinquanta card scatta. La soluzione standard è mettere l’ombra più grande su uno pseudo-elemento e far variare la sua opacità, che il browser può comporre a basso costo.

css
.card {
  position: relative;
  box-shadow: var(--shadow-sm);
}

.card::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: var(--shadow-lg);
  opacity: 0;
  transition: opacity 200ms ease-out;
  pointer-events: none;
}

.card:hover::after { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  .card::after { transition: none; }
}
Entrambe le ombre sono dipinte una sola volta. Al passaggio del mouse cambia solo l’opacità, quindi nulla viene ridisegnato durante la transizione.

Altro su ciò che costa tempo di disegno è in prestazioni dei gradienti CSS, e lo stesso approccio a strati vale per i pulsanti in pulsanti con gradiente in CSS.

Quando saltare l’ombra

Le ombre separano una superficie da ciò che le sta dietro. Se lo sfondo è un gradiente ricco o una fotografia, un’ombra forte gli fa a pugni. Spesso uno sfondo più quieto fa più per la card di qualsiasi ombra. I Mark di Gradiently sono costruiti per questo: ognuno è uno sfondo vivo con i suoi colori, la sua luce e la sua grana, e le parole che ci metti sopra restano leggibili perché il Mark si calma dietro di esse, senza riquadri né ombre a fare il lavoro.

Trova un gradiente solo tuo

Sfoglia migliaia di Mark, progetta gratis con uno qualsiasi e riserva quello in cui ti riconosci.

Sfoglia il Mercato

Le domande più frequenti

Quali sono i valori di CSS box-shadow?

Un inset facoltativo, uno scostamento orizzontale, uno verticale, un raggio di sfocatura, un raggio di diffusione e un colore, per esempio 0 4px 12px 0 rgb(0 0 0 / 0.15).

Come faccio un’ombra morbida con box shadow in CSS?

Sovrapponi da tre a cinque ombre, raddoppiando scostamento e sfocatura ogni volta, al 5-10 per cento di opacità ciascuna. Tingile verso il colore dello sfondo.

Come aggiungo più di una box shadow?

Separale con virgole in una sola dichiarazione box-shadow. La prima ombra elencata è disegnata sopra.

Cosa fa la diffusione in box-shadow?

Ingrandisce o riduce l’ombra prima che venga sfocata. Una diffusione negativa impedisce a una grande sfocatura di vedersi ai lati del riquadro.

Animare box-shadow fa male alle prestazioni?

Ridisegna a ogni fotogramma. Metti l’ombra del passaggio del mouse su uno pseudo-elemento e fai invece una transizione della sua opacità.

Condividi questa guida

Scritto da GradientlyAccount Gradiently verificato

Il team dietro Gradiently, uno strumento di design costruito attorno ai Mark: gradienti vivi che fanno sembrare tuo tutto ciò che progetti.

Vedi il nostro profilo

In questa pagina

Sintassi di box-shadowPerché una sola ombra sembra fintaCome sovrapporre le box shadowUna scala di elevazione per un’interfacciaOmbre su sfondi colorati e scuriAnimare box-shadow senza scattiQuando saltare l’ombra

Condividi questa guida

Il prossimo in CSS e web

color-mix() in CSS: mescolare i colori nel browser

Continua a leggere

Tutte le guide su CSS e web
CSS e web

Backdrop filter in CSS: vetro smerigliato che resta veloce

6 min di lettura

Il vetro smerigliato richiede tre righe di CSS e può comunque far scattare un buon telefono. Ecco il codice, quanto costa disegnarlo e le alternative che tengono leggibili le parole quando la sfocatura non arriva.

CSS e web

CSS text shadow: sintassi, esempi e alternative migliori

5 min di lettura

text-shadow è una proprietà piccola con la fama di salvare i titoli illeggibili. Funziona meglio come decorazione che come salvataggio. Ecco la sintassi, qualche stile da copiare e cosa usare quando il vero problema è la leggibilità.

CSS e web

Design token: un’unica fonte di verità per colore e tipografia

5 min di lettura

Un colore di brand che vive in quaranta file finirà per divergere. Un token vive in un solo posto e ogni piattaforma lo legge da lì. Ecco come strutturare i design token, nominarli perché durino e portarli nel codice e negli strumenti di design.

Trova lo stile che è solo tuo.

Ogni Mark è uno sfondo vivo con un solo proprietario. Prova un Mark ancora disponibile e riserva il tuo quando ti senti pronto.

Inizia a progettare

Verifica un certificato

Scrivi il numero di un certificato o il codice di un Mark per scoprire di chi è.

Funziona con ChatGPT e Claude

Chiedi un design alla tua AI. Lo crea nel tuo Mark, pronto da modificare.

ChatGPTClaude
Come collegarla

Prodotto

  • Mercato
  • Esplora
  • Prezzi
  • Certificati

Scopri

  • Guida pratica
  • Centro assistenza
  • Novità

Sviluppatori

  • Panoramica
  • ChatGPT e Claude
  • Riferimento API
  • Chiavi API

Azienda

  • Chi siamo
  • Contattaci
  • Accedi

Note legali

  • Termini
  • Privacy
  • Rimborsi
  • Protezione dei Mark
  • Cookie
  • Tutte le policy
Passa sopra le lettere. Ognuna indossa un vero Mark.Tocca una lettera per vedere il suo Mark.Un nome. Dieci Mark al suo interno.
© 2026 Gradiently