CSS-Filter sind Manipulationen an Texten oder Bildern ist eine "nicht-destruktive" Veränderung. Das "Original" wird also nicht verändert, sondern lediglich in der Ausgabe (hier dem Rendering des Browsers) nach entsprechenden Vorgaben angezeigt. Bilder und Texte können mit folgenden Filtern versehen werden (alphabetisch):
- blur() – Weichzeichnen
- brightness() – Helligkeit ändern
- contrast() – Kontrast ändern
- drop-shadow() – Schlagschatten
- grayscale() – Graustufen
- hue-rotate() – "Farbtonrotation"
- invert() – Umkehren
- opacity() – Deckkraft
- saturate() – Sättigung
- sepia() – Nun ja: Sepia 🙂
Darüber hinaus schauen wir uns
- Kombinationen mehrerer Filter &
- Filter auf anderen Objekten an.
Inhalt
Grundsätzlich funktioniert die Definition nach dem Strickmuster
selector {
filter: [filtername](parameter);
}
Vorweg kurz etwas zur Kompatibilität – damit die Internet Explorer-Nutzer nicht enttäuscht sind, wenn sie die Effekte nicht sehen:
- Firefox: Seit v.35 ohne Prefix
- Chrome: Seit v.53 ohne Prefix
- Opera: Seit v.40 ohne Prefix
- Safari: Seit v.9.1 ohne Prefix
- Edge: Seit v.13 ohne Prefix; allerdings nicht ohne Einschränkungen im Detail
- Internet Explorer: 🙁
- Mobile Safari: Seit iOS 9.3 ohne Prefix
- Android Browser: Bis Android 4.4.4 mit Prefix -webkit-, danach ohne Prefix
vgl. caniuse.com & shoudiprefix.com.
So. Hier mal ein experimenteller Überflug über die Möglichkeiten. Das verwendete Bild ist übrigens Amanhecer no Hercules von Carlos Perez Couto, Quelle: Wikimedia Commons, Lizenz: CC-by-sa.
1. blur
Der Weichzeichner benötigt eine Radius-Angabe, in dessen Umgebung ein Pixel weichgezeichnet werden soll. Je mehr, desto weicher. Beispiel:


Die CSS-Definition sieht so aus:
.filter1 {
filter: blur(5px);
}
2. brightness
Die Helligkeitseinstellung von 1 ist "original", darunter ists dunkler, darüber heller. Beispiel:



.filter2a {
filter: brightness(0.5);
}
.filter2b {
filter: brightness(3);
}
3. contrast
Hier ebenfalls: Der Wert 1 ist "original", darunter ists konrastärmer, darüber kontrastreicher. Beispiel:



.filter3a {
filter: contrast(0.5);
}
.filter3b {
filter: contrast(3);
}
4. drop-shadow
Der Schlagschatten erinnert stark an die Eigenschaft box-shadow. Auch die Angabe der Parameter nach dem Muster x, y, Weichzeichnung, Farbe ist gleich. Die Farbangabe kann über Farbname, Hex- oder RGB(A)-Angabe vorgenommen werden. Beispiel:


.filter4a {
filter: drop-shadow(2px 2px 2px black);
}
Allerdings erkennt der filter: drop-shadow(); den Alphakanal eines PNGs! Hier der Vergleich von box- und drop-shadow:


.filter4b {
box-shadow: 2px 2px 2px rgba(0,0,0,0.7);
}
.filter4c {
filter: drop-shadow(2px 2px 2px rgba(0,0,0,0.7));
}
5. grayscale
Der Parameter 1 steht für "100% Graustufen", 0 bedeutet "voll bunt". Der Unterschied zwischen Sättigung und Graustufen ist mir auch bei der Grafikbearbeitung nur dann klar, wenn die Sättigung über dem Originalwert liegt: Farbe kann man auch "übersättigen", Graustufen gibt es nur zwischen schwarz-weiß und bunt.



.filter5a {
filter: grayscale(0.5);
}
.filter5b {
filter: grayscale(1);
}
6. hue-rotate

Die Rotation des Farbtons (auf einem Farbkreis) wird in Grad von 0 bis 360 angegeben. Ein Wert von 180 entspricht also einer "Farben umkehren"-Funktion. Zum besseren Verständnis hier mal ein entsprechender Farbkreis:
Das Beispielbild hat in etwa eine "orange Grundstimmung". Daher habe ich die 0° entsprechend in den orangenen Bereich des Farbkreises gesetzt. Analog verschiebt sich in den folgenden Beispielen die Grundfarbe zu grün (90°), blau (180°) und violett (270°). Je bunter ein Bild ist, desto krasser wirkt der Effekt, da ja jeder Bildpunkt auf dem Farbkreis verschoben wird. Man sieht das in Ansätzen an den Beispielen: In dem 90°-Bild werden blaue Wolken violett (eben 90° weiter verschoben), in dem 270°-Beispiel werden blaue Wolken grünlich.




.filter6a {
filter: hue-rotate(90deg);
}
.filter6b {
filter: hue-rotate(180deg);
}
.filter6c {
filter: hue-rotate(270deg);
}
7. invert
Der invert-Filter ist mehr als eine Farbtonverschiebung um 180°. Zwar mutet eine Umkehr aller Farben eines Bildes mit dem Parameter 1 an wie eine hue-rotate(180deg);, allerdings beinhaltet die Farbumkehr auch eine Umkehr aller Helligkeitswerte. Während bei der Farbtonverschiebung um 180° aus dunkelrot ein ebenso dunkles cyan wird, macht die Farbumkehr a) aus rot cyan und b) aus dunkel hell. Klingt komisch? ist aber so:


.filter7 {
filter: invert(1);
}
Eine teilweise Umkehrung (also 0 < invert-Parameter < 1) ist nur bedingt sinnvoll und führt selten zu hübschen Ergebnissen. Der Wert von 0.5 z.B. führt zu einer einheitlichen grauen Fläche (in etwa im Bereich rgb(128,128,128) bzw. #808080) – eigentlich logisch, wenn alle Helligkeiten und Farben umgekehrt werden und an diesem Punkt die Mitte des Umkehrungsprozesses liegt: Stellen Sie sich ein Schachbrett vor, bei dem die Felder die Farbe wechseln: Von schwarz zu weiß und umgekehrt. Genau in der Mitte dieses Prozesses sind alle Felder "gleich grau".
8. opacity
Hmm. Der filter: opacity(x); hat exakt das gleiche Ergebnis wie die CSS-Eigenschaft opacity: x; – das ist einigermaßen unbeeindruckend:



.filter8a {
filter: opacity(0.5);
}
.filter8b {
opacity: 0.5;
}
9. saturate
Die Original-Sättigung eines Bildes liegt bei 1. Werte darunter verringern, Werte darüber erhöhen die Sättigung:



.filter9a {
filter: saturate(0.5);
}
.filter9b {
filter: saturate(3);
}
10. sepia
Auch bei den CSS-Filtern gibt es den beliebten (überstrapazierten?) Sepia-Effekt: 0 bedeutet "aus", 1 bedeutet "100%":



.filter10a {
filter: sepia(0.5);
}
.filter10b {
filter: sepia(1);
}
11. Filterkombinationen
Oben beschriebene Filter lassen sich beliebig kombinieren und können zu erstaunlichen Effekten führen, z.B. zu einem Duplex-Effekt (Sepia + Farbverschiebung), einer echten Bildverbesserung (Helligkeit + Sättigung + Kontrast, alles in Maßen) oder auch zu psychedelischem Farb-Irrsinn (Farbverschiebung + Umkehren + Weichzeichnen + Kontrast) 🙂




.filter11a {
filter:brightness(1.2) saturate(1.5) contrast(0.8);
}
.filter11b {
filter:sepia(1) hue-rotate(220deg);
}
.filter11c {
filter:hue-rotate(90deg) invert(0.25) contrast(2.5) saturate(2.5);
}
Filterkombinationen werden "einfach" ohne Punkt und Komma hintereinander weggeschrieben.
12. Filter auf andere Objekte anwenden
Neben Bildern können CSS-Filter auch auf andere Objekte mehr oder weniger sinnvoll (und tlw. enorm ressourcenfressend) angewendet werden:
12.1 Beispiele für Texteffekte
Weichzeichner
– Weichzeichner (filter: blur(5px);)
Schlagschatten
– Schlagschatten (filter: drop-shadow(2px 2px 2px rgba(0,0,0,0.7));)
Deckkraft
– Deckkraft (filter: opacity(0.5);)
12.2 iframes mit Weichzeichner und "umgekehrt"
CSS-Filter lassen sich sogar auf Bewegtbilder (also z.B. die YouTube- oder Vimeo-iframes) anwenden, allerdings zwingt das oft den Browser in die Knie: Die Live-Berechnung eines Effektes für (mind.) 25 Videobildern pro Sekunde lässt das Video dann etwas hakeln.
Und spätestens hier stellt sich dann auch ein wenig die Sinnfrage: Warum sollte ich ein Video weichzeichnen wollen oder seine Farben umkehren? Na, ja – weil es geht! 🙂
Original:
Weichgezeichnet:
Umgekehrte Farben:
