Filtri

Podcast CSS - 023: filtri

Supponiamo che tu debba creare un elemento con un effetto vetro satinato leggermente opaco da posizionare sopra un'immagine. Il testo deve essere testo in tempo reale e non un'immagine. E come potete farlo?

Una combinazione di filtri CSS e backdrop-filter consente di applicare effetti e sfocare ciò che serve in tempo reale. Sfocatura e opacità sono due dei tanti filtri disponibili. Diamo una rapida occhiata a ciò che fanno tutti e come usarli.

La proprietà filter

Supporto dei browser

  • 53
  • 12
  • 35
  • 9.1

Fonte

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 è un radius, ovvero quanto sfocatura viene applicata. Deve essere un'unità di lunghezza, ad esempio 10px. Le percentuali non sono accettate.

.my-element {
    filter: blur(0.2em);
}

brightness

Supporto dei browser

  • 18
  • 12
  • 35
  • 6

Fonte

Per aumentare o diminuire la luminosità di un elemento, usa la funzione luminosità. Il valore di luminosità è espresso in percentuale, mentre l'immagine non modificata è espressa come valore di 100%. Un valore pari allo 0% rende l'immagine completamente nera, quindi 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

Supporto dei browser

  • 18
  • 12
  • 35
  • 6

Fonte

Imposta un valore compreso tra 0% e 100% per aumentare o diminuire il contrasto, rispettivamente.

.my-element {
    filter: contrast(160%);
}

grayscale

Supporto dei browser

  • 18
  • 12
  • 35
  • 6

Fonte

Puoi applicare un effetto completamente in scala di grigi utilizzando 1 come valore per grayscale() oppure 0 per avere un elemento completamente saturato. Puoi anche utilizzare valori percentuali o decimali per applicare solo un effetto scala di grigi parziale. Se non passi argomenti, l'elemento sarà completamente in scala di grigi. Se passi un valore superiore a 100%, il limite sarà 100%.

.my-element {
    filter: grayscale(80%);
}

invert

Supporto dei browser

  • 18
  • 12
  • 35
  • 6

Fonte

Come grayscale, puoi trasmettere 1 o 0 alla funzione invert() per attivarla o disattivarla. Quando è attiva, i colori dell'elemento vengono completamente invertiti. Puoi anche utilizzare valori percentuali o decimali per applicare solo un'inversione parziale dei colori. Se non passi argomenti nella funzione invert(), l'elemento verrà completamente invertito.

.my-element {
    filter: invert(1);
}

opacity

Supporto dei browser

  • 18
  • 12
  • 35
  • 6

Fonte

Il filtro opacity() funziona come la proprietà opacity, in cui puoi passare un numero o una percentuale per aumentare o ridurre l'opacità. Se non passi nessun argomento, l'elemento è completamente visibile.

.my-element {
    filter: opacity(0.3);
}

saturate

Supporto dei browser

  • 18
  • 12
  • 35
  • 6

Fonte

Il filtro di saturazione è molto simile al filtro brightness e accetta lo stesso argomento: numero o percentuale. Invece di aumentare o diminuire l'effetto di luminosità, saturate aumenta o diminuisce la saturazione del colore.

.my-element {
    filter: saturate(155%);
}

sepia

Supporto dei browser

  • 18
  • 12
  • 35
  • 6

Fonte

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 di sepia(), che aumenta o diminuisce l'effetto. Se non vengono superati argomenti, viene aggiunto un effetto seppia completo (equivalente a sepia(100%)).

.my-element {
    filter: sepia(70%);
}

hue-rotate

Supporto dei browser

  • 18
  • 12
  • 35
  • 6

Fonte

Hai scoperto come la tonalità in hsl fa riferimento a una rotazione della ruota dei colori nella lezione Colori e questo filtro funziona in modo simile. Se passi un angolo, ad esempio gradi o svolte, la tonalità di tutti i colori dell'elemento viene modificata e la parte della ruota dei colori a cui fa riferimento. Se non passi alcuna argomentazione, non fa nulla.

.my-element {
    filter: hue-rotate(120deg);
}

drop-shadow

Supporto dei browser

  • 18
  • 12
  • 35
  • 6

Fonte

Puoi applicare un'ombra che abbraccia una curva come faresti in uno strumento di progettazione, come Photoshop con drop-shadow. Questa ombra viene applicata a una maschera alfa, il che rende molto utile l'aggiunta di un'ombra a un'immagine ritagliata. Il filtro drop-shadow utilizza un parametro di 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 distribuito non sono supportati.

.my-element {
    filter: drop-shadow(5px 5px 10px orange);
}

Scopri di più sui diversi tipi di ombre nel modulo shadows.

url

Supporto dei browser

  • 5
  • 12
  • 3
  • 6

Fonte

Il filtro url ti consente di applicare un filtro SVG da un elemento o file SVG collegato. Puoi scoprire di più sui filtri SVG qui.

Filtro sfondo

Supporto dei browser

  • 76
  • 17
  • 103
  • 9

Fonte

La proprietà backdrop-filter accetta tutti gli stessi valori della funzione di filtro di filter. La differenza tra backdrop-filter e filter è che la proprietà backdrop-filter applica i filtri solo allo sfondo, mentre la proprietà filter li applica all'intero elemento.

L'esempio riportato all'inizio di questa lezione è l'esempio perfetto, perché il testo non deve essere sfocato e idealmente non deve essere necessario aggiungere altri elementi HTML. Per farlo, puoi applicare filtri solo allo sfondo.

Verifica le tue conoscenze

Verifica le tue conoscenze dei filtri

Quali delle seguenti sono funzioni di filtro CSS?

grayscale()
🎉
invert()
🎉
flip()
Riprova.
multiply()
Riprova.
blur()
🎉
brightness()
🎉

Il CSS può utilizzare i filtri SVG?

La funzione di filtro url() consente di eseguire questa operazione
No
Riprova.