DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!
CSS-Filter sind ein leistungsstarkes Werkzeug, mit dem Autoren verschiedene visuelle Effekte erzielen können (ähnlich wie Photoshop-Filter für den Browser). Die CSS-Eigenschaft filter bietet Zugriff auf Effekte wie Weichzeichnen oder Farbverschiebung auf dem Rendering eines Elements, bevor das Element angezeigt wird. Filter werden häufig verwendet, um das Rendering eines Bildes, eines Hintergrunds oder eines Rahmens anzupassen.
Die Syntax ist
.filter-me {
filter: blur(3px);
filter: grayscale(1);
filter: saturate(2.2);
filter: none; /* remove existing filter */
}
Es gibt eine Reihe von Funktionen, die für den Wert verwendet werden können
blur()brightness()contrast()drop-shadow()grayscale()hue-rotate()invert()opacity()saturate()sepia()url()– zum Anwenden von SVG-Filterncustom()– „kommt bald“
Mehrere Funktionen können durch Leerzeichen getrennt verwendet werden.
.do-more-things {
filter: blur(20px) grayscale(20%);
}
Filterfunktionen
Um die CSS-Filter-Eigenschaft zu verwenden, geben Sie einen Wert für eine der folgenden oben aufgeführten Funktionen an. Wenn der Wert ungültig ist, gibt die Funktion „none“ zurück. Sofern nicht anders angegeben, akzeptieren die Funktionen, die einen Wert mit einem Prozentzeichen annehmen (wie in 34%), auch den Wert als Dezimalzahl (wie in 0,34).
Hier ist eine Demo, mit der Sie einzelne Filter ein wenig ausprobieren können
grayscale()
filter: grayscale(20%)
/* same as... */
filter: grayscale(0.2);
Konvertiert das Eingabebild in Graustufen. Der Wert „amount“ bestimmt den Anteil der Konvertierung. Ein Wert von 100 % ist vollständig graustufig. Ein Wert von 0 % lässt die Eingabe unverändert. Werte zwischen 0 % und 100 % sind lineare Multiplikatoren für den Effekt. Wenn der Parameter „amount“ fehlt, wird ein Wert von 100 % verwendet. Negative Werte sind nicht zulässig.
sepia()
filter: sepia(0.8);
/* same as... */
filter: sepia(80%);
Konvertiert das Eingabebild in Sepia. Der Wert „amount“ bestimmt den Anteil der Konvertierung. Ein Wert von 100 % ist vollständig Sepia. Ein Wert von 0 lässt die Eingabe unverändert. Werte zwischen 0 % und 100 % sind lineare Multiplikatoren für den Effekt. Wenn der Parameter „amount“ fehlt, wird ein Wert von 100 % verwendet. Negative Werte sind nicht zulässig.
saturate()
filter: saturate(2);
/* same as... */
filter: saturate(200%);
Sättigt das Eingabebild. Der Wert „amount“ bestimmt den Anteil der Konvertierung. Ein Wert von 0 % ist vollständig entsättigt. Ein Wert von 100 % lässt die Eingabe unverändert. Andere Werte sind lineare Multiplikatoren für den Effekt. Werte über 100 % sind zulässig und ergeben übersättigte Ergebnisse. Wenn der Parameter „amount“ fehlt, wird ein Wert von 100 % verwendet. Negative Werte sind nicht zulässig.
hue-rotate()
filter: hue-rotate(180deg);
/* same as... */
filter: hue-rotate(0.5turn);
Wendet eine Farbtonrotation auf das Eingabebild an. Der Wert „angle“ bestimmt die Anzahl der Grad um den Farbkranz, um die die Eingabeproben angepasst werden. Ein Wert von 0deg lässt die Eingabe unverändert. Wenn der Parameter „angle“ fehlt, wird ein Wert von 0deg verwendet. Der Maximalwert ist 360deg.
invert()
filter: invert(100%);
Invertiert die Proben im Eingabebild. Der Wert „amount“ bestimmt den Anteil der Konvertierung. Ein Wert von 100 % ist vollständig invertiert. Ein Wert von 0 % lässt die Eingabe unverändert. Werte zwischen 0 % und 100 % sind lineare Multiplikatoren für den Effekt. Wenn der Parameter „amount“ fehlt, wird ein Wert von 100 % verwendet. Negative Werte sind nicht zulässig.
opacity()
filter: opacity(0.5);
/* same as... */
filter: opacity(50%);
Wendet Transparenz auf die Proben im Eingabebild an. Der Wert „amount“ bestimmt den Anteil der Konvertierung. Ein Wert von 0 % ist vollständig transparent. Ein Wert von 100 % lässt die Eingabe unverändert. Werte zwischen 0 % und 100 % sind lineare Multiplikatoren für den Effekt. Dies entspricht der Multiplikation der Eingabebildproben mit „amount“. Wenn der Parameter „amount“ fehlt, wird ein Wert von 100 % verwendet. Diese Funktion ähnelt der etablierteren Eigenschaft opacity; der Unterschied besteht darin, dass bei Filtern einige Browser Hardwarebeschleunigung für bessere Leistung bieten.
brightness()
filter: brightness(0.5);
/* same as... */
filter: brightness(50%);
Wendet einen linearen Multiplikator auf das Eingabebild an, wodurch es heller oder dunkler erscheint. Ein Wert von 0 % erzeugt ein vollständig schwarzes Bild. Ein Wert von 100 % lässt die Eingabe unverändert. Andere Werte sind lineare Multiplikatoren für den Effekt. Werte über 100 % sind zulässig und ergeben hellere Ergebnisse. Wenn der Parameter „amount“ fehlt, wird ein Wert von 100 % verwendet.
contrast()
filter: contrast(4);
/* same as... */
filter: contrast(400%);
Passt den Kontrast der Eingabe an. Ein Wert von 0 % erzeugt ein vollständig schwarzes Bild. Ein Wert von 100 % lässt die Eingabe unverändert. Werte über 100 % sind zulässig und ergeben Ergebnisse mit weniger Kontrast. Wenn der Parameter „amount“ fehlt, wird ein Wert von 100 % verwendet.
blur()
filter: blur(5px);
filter: blur(1rem);
Wendet einen Gaußschen Weichzeichner auf das Eingabebild an. Der Wert „radius“ bestimmt den Wert der Standardabweichung der Gaußschen Funktion, also wie viele Pixel auf dem Bildschirm ineinander übergehen. Ein größerer Wert erzeugt mehr Weichzeichnung. Wenn kein Parameter angegeben wird, wird ein Wert von 0 verwendet. Der Parameter wird als CSS-Länge angegeben, akzeptiert aber keine Prozentwerte.
drop-shadow()
filter: drop-shadow(2px 2px 5px rgb(0 0 0 / 0.5));
filter: drop-shadow(4px 4px red); /* no blur */
Wendet einen Schlagschatteneffekt auf das Eingabebild an. Ein Schlagschatten ist effektiv eine weichgezeichnete, versetzte Version der Alphamaske des Eingabebilds, die in einer bestimmten Farbe gezeichnet und unter das Bild gelegt wird. Die Funktion akzeptiert einen Parameter vom Typ (definiert in CSS3 Backgrounds), mit der Ausnahme, dass das Schlüsselwort ‚inset‘ nicht zulässig ist.
Diese Funktion ähnelt der etablierteren Eigenschaft box-shadow; der Unterschied besteht darin, dass bei Filtern einige Browser Hardwarebeschleunigung für bessere Leistung bieten.
Drop-shadow ahmt auch die Kontur der beabsichtigten Objekte auf natürliche Weise nach, im Gegensatz zu box-shadow, das nur die Box als Pfad behandelt.
Genau wie bei text-shadow gibt es keinen ‚spread‘-Parameter, um einen soliden Schatten zu erzeugen, der größer als das Objekt ist.
url()
filter: url()
Die Funktion url() nimmt den Speicherort einer XML-Datei entgegen, die einen SVG-Filter angibt, und kann einen Anker zu einem bestimmten Filterelement enthalten. Hier ist ein Tutorial, das als gute Einführung in SVG-Filter mit einer unterhaltsamen Demo dient.
Filter animieren
Da Filter animierbar sind, kann dies Türen für eine ganze Reihe von Spaß öffnen.
Notizen
Sie können beliebig viele Funktionen kombinieren, um das Rendering zu manipulieren, aber die Reihenfolge spielt immer noch eine Rolle (d. h. die Verwendung von grayscale() nach sepia() führt zu einer vollständig grauen Ausgabe).
Ein berechneter Wert anders als „none“ führt zur Erstellung eines Stapelkontextes, genauso wie CSS-Deckkraft. Die Filter-Eigenschaft hat keinen Einfluss auf die Geometrie des Box-Modells des Ziel-Elements, auch wenn Filter das Malen außerhalb des Box-Modells eines Elements verursachen können. Alle Teile des Ziel-Elements werden von Filterfunktionen beeinflusst. Dies umfasst jeglichen Inhalt, Hintergrund, Rahmen, Textdekoration, Umrisslinien und sichtbare Scrollmechanismen des Elements, auf das der Filter angewendet wird, sowie die seiner Nachkommen. Filter können auch auf Inline-Inhalte wie einzelne Textabschnitte angewendet werden.
Die Spezifikation führt auch eine filter(image-URL, filter-functions) Wrapper-Funktion für ein Bild ein. Sie würde es ermöglichen, jedes Bild zum Zeitpunkt der Verwendung in CSS zu filtern. Zum Beispiel könnten Sie ein Hintergrundbild weichzeichnen, ohne den Text weichzuzeichnen. Diese Filterfunktion wird noch nicht in Browsern unterstützt. In der Zwischenzeit können Sie sowohl den Hintergrund als auch den Filter auf ein Pseudoelement anwenden, um einen ähnlichen Effekt zu erzielen.
Die proprietäre IE-Filterei
Wurde auch die filter-Eigenschaft verwendet, wie z.B.
.half-opacity {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
filter: alpha(opacity=50);
}
Wurde hauptsächlich für Deckkraft verwendet, wenn Sie IE 8 und älter unterstützen mussten.
Weitere Informationen
- W3C Filter Effects Specification
- Bennett Feelys Filtergalerie
- MDN Docs
- CSS Filter Polyfill
- Verständnis von CSS-Filtereffekten
Browser-Unterstützung
Diese Browser-Supportdaten stammen von Caniuse, das weitere Details enthält. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 18* | 35 | Nein | 79 | 6* |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 4.4* | 6.0-6.1* |
Ich bin so beeindruckt von der Arbeit von euch Leuten.
Ich lebe in Indien und habe gerade meine Karriere im Webdesign begonnen. Es gibt viele Dinge, die ich nicht weiß, und ich brauche immer Hilfe dabei, und jedes Mal, wenn ich nach etwas suche, das ich nicht weiß, finde ich es auf dieser Website.
Vielen Dank, vielen Dank für Ihre großartige Arbeit.
Diese Website leistet erstaunliche Arbeit für all die Menschen, die sich keine teure Online-Ausbildung leisten können und wenig Zeit und Ressourcen haben. Vor allem habe ich keine Zeit, kein Geld und meistens auch keine Ressourcen, aber mit Hilfe von Diensten wie diesem nähere ich mich einer guten Webdesigner-Karriere.
Wenn Ihre Website Hilfe benötigt, stehe ich Ihnen zur Verfügung
Meine E-Mail-Adresse [email protected]
Facebook striker.a.a.a
Machen Sie weiter so mit Ihrer erstaunlichen Arbeit
:)
Ja, es ist eine großartige Website.
Die Animation funktioniert unter Firefox 46.0.1 überhaupt nicht.
Irgendwelche Ideen?
Cheers…
Du musst nur den Code von -webkit- in ohne das ändern (oder neue Zeilen ohne -webkit- hinzufügen). So
Und dann funktioniert es unter Mozilla. Chris, schreibe den Code nur für Chrome und Safari.
Vielen Dank für das Tutorial.
Ich habe bemerkt, dass die Tabelle besagt, dass Firefox nicht unterstützt wird.
Ich bin auf folgendes gestoßen: „-webkit-filter: blur(20px);“. Würde der Effekt dann nicht auch unter Firefox funktionieren?
-webkit-betrifft nur Chrome, Opera (15+) und Safari. Sie können Filtereffekte in Firefox mit SVG machen.Es wird jetzt unter Firefox ohne Vendor-Präfixe unterstützt. :)
-webkit- wirkt nur bei Chrome, Safari etc. Browser
Wenn Sie es mit Firefox verwenden wollen, können Sie -ms-filter ausprobieren
Eigentlich musst du -moz für Firefox verwenden. -ms ist für Microsoft Internet Explorer
Hallo, mit diesem Artikel und der Erklärung auf Spanisch von @kseso habe ich diese Demo erstellt: http://codepen.io/g3kdigital/pen/cxCvu Ich zeige, **wie die Farbe des Tags nur mit CSS und Filtern geändert werden kann**, aber im Moment funktioniert es nur in -webkit-. Cheers.
Sehr schöner Anwendungsfall.
Das ist ein *atemberaubendes* Beispiel für Filter.
Ich habe gefunden, dass du geschrieben hast
Wo ist einer von
Quellcode überprüft, du hast dich darin verheddert.
Nur so nebenbei :D
Für Firefox musst du nur -webkit durch -moz ersetzen
Beispiel
-moz-filter:grayscale(1);-webkit-filter:grayscale(1);
Zu Ihrer Information (CMIIW) CSS-Präfixe
-khtml- (Konqueror, sehr altes Safari)
-moz- (Firefox)
-o- (Opera)
-ms- (Internet Explorer)
-webkit- (Safari, Chrome)
Das Firefox-Präfix -moz- funktioniert nicht. Sie müssen verwenden
Demo
Interessanterweise funktioniert es in der neuen Firefox Developers Edition (so hoffentlich ist die vollständige Unterstützung auf dem Weg – caniuse deutet darauf hin, dass v35 die vollständige Unterstützung ohne Vendor-Präfix hat).
Ich habe gerade
” filter: opacity(.2); ”
Ohne „-webkit-filter: opacity(.2);“
Funktioniert gut in Firefox Developer Edition „36.0a2 (2014-12-10)“.
Danke für das schöne Tutorial, es ist prägnant :D
Großartig :D!!! Danke
Kleinere Korrektur
Sie haben „saturate“ nicht in der oben genannten Liste aufgeführt.
Danke. Behoben.
Danke für die hilfreichen Tipps. Mein Kunde wünscht sich einen Sepia-Ton über den Fotos seiner Homepage, gut zu wissen, dass ich die CSS die Bilder im Flug konvertieren lassen kann.
Wow!!! Toll zu sehen, dass es in meinem Lieblingsbrowser funktioniert: Mozilla Firefox!!! Ich sehe es in der FF Dev Edition, es ist großartig, es auch hier zu haben!
:) :) :)
Großartig mit einem großen „A“!!!!
Hey Christ, ich weiß nicht, ob es nur mein Problem oder meine Internetverbindung ist, aber die eingebetteten Beispiele von Codepen werden nicht angezeigt oder nur halb. Vielleicht möchtest du es dir ansehen.
Cheers und übrigens toller Artikel
Ich musste kürzlich blaue PNG-Icons beim Hovern weiß machen.
Ich habe Folgendes verwendet, um dies zu erreichen, und dachte, es könnte jemand anderem nützlich sein.
Danke Justin – genau das, was ich brauchte.
Wenn es sich um ein SVG-Icon handelt, das geladen wird, oder bei einigen PNGs könnten Sie auch
filter: contrast(0) brightness(200%);
Froh, dass es für dich funktioniert hat.
Justin! Du hast mir Tonnen von Arbeit erspart… Obwohl ich mich durch die Hölle gequält habe, um deinen kleinen Schnipsel zu finden ;-)
Vielen Dank, vielen Dank, vielen Dank.
Gern geschehen!
Lass mich wissen, wenn du bei diesem Hack auf browserübergreifende Probleme stößt.
Vielen Dank dafür! Es war genau das, wonach ich gesucht habe. Ich habe stundenlang nach einer Möglichkeit gesucht, mein Hintergrundbild nach schwarz auszublenden, ohne mein Bild in das Tag im HTML einfügen zu müssen. Ich war kurz davor aufzugeben und schlafen zu gehen, als ich darauf stieß. Jetzt werde ich wahrscheinlich nicht schlafen, weil ich zu aufgeregt bin!
Vielen Dank für das Tutorial.
Ich ging davon aus, dass Vendor-Präfixe für die Verwendung von Filtern in CSS nicht benötigt werden. Das scheint nicht der Fall zu sein, denn wenn ich nur verwende
filter: blur(5px);
für ein Bild bleibt das Bild unverändert, aber wenn ich benutze
-webkit-filter: blur(5px);
Ist es daher korrekt anzunehmen, dass Vendor-Präfixe immer noch benötigt werden?
Vielen Dank im Voraus.
Aber, ich stelle fest, dass dieses CSS in einem CSS-Validator nicht gültig ist. Gibt es eine Lösung, die hilft, dies richtig zu validieren?
Ihre Beispielbilder-Pfade/URLs/Quellen fehlen. :)
Das ist mir auch aufgefallen. Wenn man auf den Link ‚Bearbeiten auf Codepen‘ klickt, funktioniert es. Seltsam.
Das Bild hat für einige Domains eine Hotlinking-Schutzfunktion, scheint es.
css only animation start button: http://codepen.io/anon/pen/JGYqgq
wie kann ich den Filter auf das bgImage anwenden, ohne den Text darüber zu beeinträchtigen?
Der einzige Weg, dies zu tun, wäre, den Text und den Hintergrundcontainer zu trennen und dann den Text absolut über diesem Container zu platzieren.
coole Sachen..
Gibt es einen Filter, der mein Bild schärfer macht?
Danke!
Ist es möglich, einen Filter nur auf eine Auswahl anzuwenden? z.B. schwarze Pixel in weiße invertieren, etc. Ich brauche bitte dringend Hilfe dabei.
Hallo, ich habe mit diesen Filtern experimentiert... seltsam ist, dass nur die auf dem Titel betroffenen waren, als ich versuchte, die Bilder weiß zu machen. Nicht sicher warum...
Mein Code
Hallo, ich möchte, dass der Hintergrund als Filter-Blur dient und jeglicher Text darüber normal bleibt.
Bitte schlage mir eine Lösung vor.
Hallo
Ich bin gerade auf einen Fehler gestoßen.
Wenn Sie einen Filter auf das Elternelement eines fest positionierten Elements anwenden.
Ihre Position Fixed funktioniert nicht mehr.
URL mit ID-basierter Filterung funktioniert in Firefox nicht, gibt es dafür eine Lösung?
Prüfen Sie zum Beispiel Ihren Link: https://codepen.io/grayghostvisuals/pen/noItd im Firefox-Browser.
Gibt es eine Idee, wann die Funktion filter: custom() von Browsern unterstützt wird?
Bis dahin gibt es eine Möglichkeit, SVG zur Anwendung benutzerdefinierter Shader zu verwenden?