Podcast CSS - 023: Filtri .
Supponiamo di dover creare un elemento leggermente opaco, effetto vetro satinato sopra un'immagine. Il testo deve essere testo online e non un'immagine. E come potete farlo?
Una combinazione di filtri CSS e backdrop-filter
che ci consentono di applicare effetti e sfocare in tempo reale ciò che serve.
Sfocatura e opacità sono due dei tanti filtri disponibili:
vediamo rapidamente cosa fanno tutti e come usarli.
La proprietà filter
Puoi applicare uno o più dei seguenti filtri come valore per
filter
Se applichi un filtro in modo errato,
gli altri filtri definiti per filter
non funzioneranno.
blur
In questo modo viene applicata una sfocatura gaussiana e l'unico argomento che puoi passare è radius
,
ovvero
quanto sfoca viene applicata.
Deve essere un'unità di lunghezza, ad esempio 10px
. Le percentuali non sono accettate.
.my-element {
filter: blur(0.2em);
}
brightness
Per aumentare o diminuire la luminosità di un elemento: usa la funzione di luminosità. Il valore della luminosità è espresso in percentuale e l'immagine non modificata è espressa come valore del 100%. Un valore pari a 0% rende l'immagine completamente nera pertanto valori compresi tra 0% e 100% rendono l'immagine meno luminosa. Utilizza valori superiori al 100% per aumentare la luminosità.
.my-element {
filter: brightness(80%);
}
contrast
Imposta un valore compreso tra 0% e 100% per diminuire o aumentare il contrasto, rispettivamente.
.my-element {
filter: contrast(160%);
}
grayscale
Puoi applicare un effetto completamente in scala di grigi utilizzando 1
come valore per grayscale()
,
o 0
per avere un elemento completamente saturato.
Puoi anche utilizzare valori percentuali o decimali per applicare solo un effetto parziale in scala di grigi.
Se non passi argomenti, l'elemento assumerà completamente la scala di grigi.
Se passi un valore superiore al 100%, il limite sarà 100%.
.my-element {
filter: grayscale(80%);
}
invert
Proprio come grayscale
,
puoi passare 1
o 0
alla funzione invert()
per attivarla o disattivarla.
Quando è attivo, i colori dell'elemento sono completamente invertiti.
Puoi anche utilizzare valori percentuali o decimali per applicare solo un'inversione parziale dei colori.
Se non passi argomenti alla funzione invert()
,
l'elemento sarà completamente invertito.
.my-element {
filter: invert(1);
}
opacity
Il filtro opacity()
funziona esattamente come la proprietà opacity
,
in cui puoi passare un numero o una percentuale per aumentare o ridurre l'opacità.
Se non passi argomenti, l'elemento è completamente visibile.
.my-element {
filter: opacity(0.3);
}
saturate
Il filtro di saturazione è molto simile al filtro brightness
e accetta lo stesso argomento:
numero o percentuale.
Invece di aumentare o diminuire l'effetto luminosità,
saturate
aumenta o diminuisce la saturazione del colore.
.my-element {
filter: saturate(155%);
}
sepia
Puoi aggiungere un effetto seppia con questo filtro che funziona come grayscale()
.
Il tono seppia è una tecnica di stampa fotografica che converte i toni neri in toni marroni per riscaldarli.
Puoi passare un numero o una percentuale come argomento per sepia()
che aumenta o diminuisce l'effetto.
Se non viene inviato alcun argomento, si ottiene un effetto seppia completo (equivalente a sepia(100%)
).
.my-element {
filter: sepia(70%);
}
hue-rotate
Hai imparato in che modo la tonalità in hsl
fa riferimento a una rotazione della ruota dei colori nella
lezione sui colori e questo filtro funziona in modo simile.
Se passi un angolo, ad esempio gradi o svolte,
cambia la tonalità di tutti i colori dell'elemento,
cambiando la parte della ruota dei colori a cui fa riferimento. Se non trasmetti nessun argomento, non succede niente.
.my-element {
filter: hue-rotate(120deg);
}
drop-shadow
Puoi applicare un'ombra che abbraccia le curve come faresti in uno strumento di progettazione,
come Photoshop con
drop-shadow
Questa ombra viene applicata a una maschera alfa, perciò è molto utile per aggiungere un'ombra a un'immagine di ritaglio.
Il filtro drop-shadow
utilizza un parametro ombra che contiene valori di offset-x, offset-y, sfocatura e colore separati da spazi.
È quasi identico a box-shadow
,
ma la parola chiave inset
e il valore di spread non sono supportati.
.my-element {
filter: drop-shadow(5px 5px 10px orange);
}
Scopri di più sui diversi tipi di ombre nel modulo Ombre.
url
Il filtro url
ti consente di applicare un filtro SVG da un elemento o file SVG collegato.
Puoi
scopri di più sui filtri SVG qui
Filtro Sfondo
Il filtro sfondo
accetta tutti gli stessi valori delle funzioni di filtro di filter
.
La differenza tra backdrop-filter
e filter
è che la proprietà backdrop-filter
applica i filtri solo allo sfondo,
in cui la proprietà filter
la applica all'intero elemento.
L'esempio all'inizio di questa lezione è l'esempio perfetto, perché non vuoi che il testo venga sfocato e idealmente non vuoi dover aggiungere altri elementi HTML. La possibilità di applicare filtri solo allo sfondo lo consente.
Verifica le tue conoscenze
Verifica le tue conoscenze sui filtri
Quali delle seguenti sono funzioni di filtro CSS?
grayscale()
invert()
flip()
multiply()
blur()
brightness()
I CSS possono utilizzare i filtri SVG?
url()
attiva questa azione