Menu

Blur e filter in CSS: blur(), grayscale, brightness

filter: blur(5px) sfoca un elemento, e backdrop-filter: blur() sfoca ciò che c'è dietro. Impara tutte le funzioni di filtro (brightness, contrast, grayscale, sepia, saturate, hue-rotate, invert, drop-shadow) con cursori dal vivo, come combinarle e il problema dei bordi sfocati.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

Sfocare un elemento

filter: blur() accetta una lunghezza, il raggio della sfocatura. Più è grande, più l'elemento è sfocato:

filter funziona su qualsiasi elemento, non solo sulle immagini: un div sfocato sfoca anche il suo testo, il bordo e i figli. Nota i bordi morbidi delle immagini sfocate: la sfocatura allarga l'immagine verso l'esterno e la mescola con l'area trasparente attorno. La soluzione è più sotto, in "Il problema dei bordi sfocati".

Sfocare lo sfondo: backdrop-filter

Per sfocare ciò che sta dietro un elemento (un pannello di vetro smerigliato sopra una foto o una pagina), usa backdrop-filter. Il contenuto dell'elemento resta nitido. Serve uno sfondo trasparente per vedere la sfocatura:

Le strisce e i cerchi sono nitidi attorno al pannello e sfocati dietro di esso, mentre il testo del pannello resta intatto. Mantieni il testo leggibile: una tinta più chiara o più scura nel colore di sfondo aiuta sulle immagini piene di dettagli.

Tutte le funzioni di filtro, dal vivo

Muovi un cursore qualsiasi. La riga sotto l'immagine è il valore esatto di filter, pronto da copiare:

Vengono scritte solo le funzioni che hai spostato dal loro valore neutro, così il valore resta breve. brightness(1) o blur(0px) non cambiano nulla, quindi non c'è motivo di elencarle.

Funzioni di filtro

FunzioneValore neutroCosa faEsempio
blur(r)0Sfocatura gaussiana con raggio rblur(4px)
brightness(n)1più scuro sotto 1, più luminoso soprabrightness(0.7)
contrast(n)1più piatto sotto 1, più incisivo sopracontrast(1.3)
grayscale(n)01 (o 100%) è tutto grigiograyscale(100%)
sepia(n)0tono marrone caldosepia(0.6)
saturate(n)10 è grigio, sopra 1 più vivacesaturate(1.5)
hue-rotate(a)0degsposta ogni tonalità lungo la ruota dei colorihue-rotate(90deg)
invert(n)01 è un negativo completo dei coloriinvert(1)
opacity(n)1come la proprietà opacityopacity(0.5)
drop-shadow(x y blur color)un'ombra che segue la formadrop-shadow(2px 4px 6px rgb(0 0 0 / 0.3))

I numeri possono anche essere percentuali (grayscale(100%) equivale a grayscale(1)). Più funzioni vanno in un solo valore, separate da spazi, e vengono applicate in ordine: filter: grayscale(1) sepia(1) dà una tinta marrone, mentre sepia(1) grayscale(1) finisce in un semplice grigio.

drop-shadow segue la forma

box-shadow è sempre un rettangolo (al massimo con angoli arrotondati). drop-shadow() viene disegnata a partire dai pixel visibili, quindi un'icona trasparente riceve un'ombra con il contorno dell'icona:

La prima stella proietta un'ombra quadrata dal suo riquadro invisibile. La seconda ne proietta una a forma di stella. A differenza di box-shadow, drop-shadow() non ha un valore di spread né inset; la pagina su box-shadow li spiega.

Il problema dei bordi sfocati

Un'immagine sfocata sfuma ai bordi, perché la sfocatura attira i pixel trasparenti attorno. Per mantenere un bordo netto (per esempio per uno sfondo sfocato in apertura di pagina), metti l'immagine in un contenitore con overflow: hidden e ingrandisci leggermente l'immagine, così il bordo morbido viene tagliato:

.hero { overflow: hidden; }
.hero img { filter: blur(8px); transform: scale(1.1); }

Effetti hover con filter

filter si può animare con una transizione, quindi una parete di loghi che passa dal grigio al colore o una scheda attenuata fino all'hover sono due regole:

Passa il mouse su un riquadro (o raggiungilo con Tab) e il suo colore compare in dissolvenza.

Buono a sapersi

  • Prestazioni. I raggi di sfocatura grandi su aree grandi sono i più costosi, soprattutto backdrop-filter su elementi che si muovono o scorrono. Prova su un telefono.
  • Leggibilità. Non sfocare mai un testo che le persone devono leggere, e controlla il contrasto del testo sopra un pannello smerigliato.
  • Contesto di sovrapposizione. Qualsiasi filter diverso da none crea un nuovo stacking context e diventa il blocco contenitore per i discendenti con position: fixed, come transform.

Errori comuni

  • filter: blur(5). Il raggio richiede un'unità: blur(5px).
  • Usare filter: blur() per un pannello smerigliato. Sfoca il testo del pannello stesso. Usa backdrop-filter con uno sfondo trasparente.
  • Un backdrop-filter che non mostra nulla. Lo sfondo dell'elemento deve essere almeno in parte trasparente, e dietro deve esserci qualcosa.
  • Due dichiarazioni filter. La seconda sostituisce la prima. Metti tutte le funzioni in un solo valore.
  • Ombre a forma di box su icone trasparenti. Usa filter: drop-shadow() invece di box-shadow.

Domande frequenti

Come sfoco un elemento in CSS?

Usa filter: blur(5px);. La lunghezza è il raggio della sfocatura: 0 è nitido e i valori più grandi sono più sfocati. Sfoca l'elemento e tutto ciò che contiene, compresi testo e immagini.

Come sfoco lo sfondo dietro un elemento?

Usa backdrop-filter: blur(10px); sull'elemento, con uno sfondo in parte trasparente come rgb(255 255 255 / 0.5). Il contenuto dell'elemento resta nitido e ciò che c'è dietro viene sfocato: è l'effetto vetro smerigliato.

Che differenza c'è tra drop-shadow() e box-shadow?

box-shadow segue sempre il box rettangolare dell'elemento. filter: drop-shadow() segue la forma visibile, comprese le aree trasparenti di un PNG o di un SVG, quindi l'ombra di un'icona ha il contorno dell'icona.

Come rendo un'immagine in bianco e nero con il CSS?

Usa filter: grayscale(100%); (o grayscale(1)). Aggiungi una transizione e filter: grayscale(0) all'hover per far tornare il colore.

Posso usare più filtri insieme?

Sì, elencali separati da spazi: filter: grayscale(1) brightness(1.2) blur(1px);. Vengono applicati in ordine, quindi l'ordine può cambiare il risultato. Una seconda dichiarazione filter sostituisce la prima.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA