Skip to main content

CSS Filter Generator

Create CSS filter effects with blur, brightness, contrast, grayscale and more. Image-filter CSS in one click.

Geprüft von · Zuletzt geprüft

0px
100%
100%
0%
0deg
0%
100%
100%
0%
CSS
filter: none;

Den Filter-Generator bedienen

  1. Bewege jeden Schieberegler - Unschärfe, Helligkeit, Kontrast, Graustufen, Farbton-Rotation, Invertierung, Deckkraft, Sättigung, Sepia - um die entsprechende Filterfunktion anzuwenden. Jeder Filter hat einen vernünftigen Standard, der eine No-Op darstellt; ihn dort zu belassen, schließt ihn aus der Ausgabe aus.
  2. Verkette Filter implizit. Jeder Schieberegler, der sich von seinem neutralen Wert unterscheidet, trägt zum finalen filter: f1(x) f2(y)-String bei. Filter werden von links nach rechts angewendet, sodass grayscale(1) sepia(1) einen warmeren Duoton ergibt als sepia(1) grayscale(1).
  3. Beobachte das Vorschaubild. Derselbe Filter-Stack wird auf ein Beispielbild angewendet und durch ein einfaches style-Attribut gerendert - was du siehst, ist buchstäblich das, was der Browser auf deiner Produktionsseite malen wird.
  4. Klicke "Alle zurücksetzen" um jeden Schieberegler auf seinen Standard-(Identitäts-)Wert zurückzusetzen, wenn du von vorne beginnen möchtest.
  5. CSS kopieren. Füge die filter-Deklaration auf ein beliebiges HTML-Element ein - Bilder, Divs, Videos, SVG, sogar Inline-Text.

Wie die Filter-Pipeline ausgeführt wird

CSS filter ist in Filter Effects Module Level 1 definiert und bildet auf eine Reihe von SVG-äquivalenten Filterprimitive (feGaussianBlur, feColorMatrix, feComponentTransfer, feOffset) ab. Wenn der Browser filter: blur(4px) grayscale(1) sieht, konstruiert er einen In-Memory-Filtergraphen, rastert das Element in einen Offscreen-Puffer, führt die Filterprimitive der Reihe nach gegen diesen Puffer aus und kompositiert das Ergebnis zurück auf die Seite. Jede eingebaute Funktion - Unschärfe, Helligkeit, Kontrast, Graustufen, Farbton-Rotation, Invertierung, Deckkraft, Sättigung, Sepia und der Kurzhand-Schlagschatten - entzuckert zu einem dieser Primitive mit voreingestellten Argumenten.

Entscheidend ist, dass Filter das Element auf seine eigene Compositor-Schicht zwingen und es offscreen rendern, bevor der Filter angewendet wird, was zwei Konsequenzen hat. Erstens werden Filter in jedem modernen Browser GPU-beschleunigt, weil der Offscreen-Durchlauf auf der GPU läuft. Zweitens ändert sich der Containing-Block für Nachkommen: position: fixed-Kinder werden vom gefilterten Vorfahren eingefangen, eine Überraschung, die Leute beim Migrieren von Seiten trifft. Große Unschärferadien sind der kostspielige Fall - eine 30px-Unschärfe auf einem Vollbild-Element kann Animationen auf mobilen Geräten mittlerer Klasse auf 30fps senken. Der "Paint"- und "Composite Layers"-Eintrag in Chrome DevTools' Performance-Tab zeigt die Kosten.

Reale Fälle, wo filter seinen Wert zeigt

  • Hero-Foto-Waschen - brightness und saturate kombinieren, um ein Foto in Richtung der Markenpalette zu tönen, ohne die Quelldatei zu bearbeiten.
  • Hover-Zustände auf Produktbildern - ein subtiles brightness(1.05) oder saturate(1.1) beim Hover signalisiert Interaktivität ohne zusätzliche Assets.
  • Deaktivierte UI-Zustände mit grayscale(1) opacity(0.6) anstelle von handgefertigten deaktivierten Stilen auf jeder Steuerung.
  • Verschwommene modale Hintergründe, über Seiteninhalt geschichtet (oft kombiniert mit backdrop-filter).
  • Duoton-Hero-Bilder - grayscale(1) sepia(1) hue-rotate(200deg) ergibt kostenlos einen blauen Duoton.
  • Druckoptimierte Versionen - wende grayscale(1) in einer @media print-Regel an, um das Schwarzweiß-Drucken von farbigen Infografiken zu erzwingen.

Edge Cases und Fallstricke

  • position: fixed innerhalb gefilterter Elemente hört auf, fixiert zu sein. Filter erstellen einen Containing-Block gemäß Filter Effects Level 1, sodass fixierte Nachkommen mit dem gefilterten Vorfahren scrollen. Bewege sie aus dem gefilterten Teilbaum heraus.
  • Verschwommene Ränder lecken über die Box. Eine 10px-Unschärfe erstreckt sich in alle Richtungen um 10px; das Zuschneiden mit overflow: hidden stoppt das Lecken, schneidet aber auch die Unschärfe selbst ab, was normalerweise schlechter aussieht als jedes Extrem. Füge dem gefilterten Container Padding hinzu oder akzeptiere den erweiterten Bereich.
  • Backdrop-filter ist eine andere Eigenschaft. filter beeinflusst die eigenen Pixel des Elements; backdrop-filter beeinflusst, was hinter dem Element ist. Sie nehmen dieselbe Funktionssyntax, haben aber unterschiedliche Kompatibilitätsprofile und erscheinen oft zusammen auf Modals.
  • Hue-rotate über 360 umschlingt. hue-rotate(540deg) ist äquivalent zu hue-rotate(180deg). Das ist erwartet, überrascht aber oft Leute, die Rotation kontinuierlich animieren - verwende 360deg als Obergrenze für einen einzelnen Zyklus.
  • Mehrere invert()-Aufrufe heben sich nicht perfekt auf. Weil jeder Filter auf der gerasterten Ausgabe des vorherigen läuft, ist invert(1) invert(1) nah an, aber nicht identisch mit, der Identität auf Anti-Aliased-Rändern. Vermeide das Verdoppeln von Filtern, die sich aufheben sollten.
  • Text wird unter jedem Filter etwas weicher. Die Offscreen-Rasterung bei der Paint-Auflösung des Elements bedeutet, dass Subpixel-Text-Antialiasing verloren geht. Überschriften und Fließtext sind noch lesbar; dünne Serifenschriftarten in kleinen Größen können marginal unschärfer wirken.

Spezifikation und Kompatibilität

CSS filter stammt aus Filter Effects Module Level 1. Es nutzt bewusst SVG-Filterprimitive, um das Neuerfinden von Bildverarbeitungsmathematik zu vermeiden, und jede Kurzfunktion ist formal äquivalent zu einer benannten Kombination. Browserunterstützung laut caniuse.com/css-filters: Chrome 53+, Firefox 35+, Safari 9.1+, Edge 13+ - im Wesentlichen universell seit 2016. Das nicht verwandte backdrop-filter-Attribut hat etwas engere Abdeckung - es benötigten -webkit- in Safari bis Version 14. Die Spezifikation definiert auch filter: url(#id), um einen beliebigen SVG-<filter> zu referenzieren, was du verwendest, um benutzerdefinierte feTurbulence, feMorphology oder Bezier-Kurven-Komponenten-Transfers anzuwenden - Dinge, die nicht mit den eingebauten Kurzfunktionen ausdrückbar sind.

CSS-Filter vs. Bildbearbeitungs-Workflows

Das meiste, was filter tut, kann auch zur Export-Zeit aus Figma oder Photoshop in Bild-Assets eingebracht werden. Der Live-Filter-Ansatz gewinnt, wenn du Theming (Dark-Mode-Duoton über eine einzelne CSS-Variable), Hover-Interaktionen, Animationen oder benutzerkonfigurierbare Effekte benötigst. Er verliert, wenn du präzise Farbwissenschaft für druckgebundene Bilder oder konsistentes Aussehen über Nicht-CSS-Viewer (RSS, AMP, E-Mail-Clients) benötigst. Für animierte Filtereffekte ist filter mit @keyframes viel günstiger als das erneute Rendern eines Bildes auf einem Canvas in jedem Frame, und es bleibt bei jeder DPR scharf. Für fotografische Farbgradierung liefert Adobe Camera Raw noch bessere Ergebnisse. Und wenn du Filter jenseits der Kurzfunktionen benötigst - selektive Farbe, Tonkurven, Faltungs-Unschärfen - fall auf einen SVG-<filter> mit expliziter feColorMatrix zurück, den filter: url() gerne referenziert.

Häufig gestellte Fragen

Was ist der Unterschied zwischen filter und backdrop-filter?

<code>filter</code> wendet Bildeffekte auf die eigenen Pixel des Elements an - seine Kinder, Hintergrund, Rahmen und Text. <code>backdrop-filter</code> wendet dieselben Funktionen auf das an, was hinter dem Element gemalt wird, und erzeugt den iOS-artigen Mattglas-Look. Sie nehmen dieselbe Funktionsliste, unterscheiden sich aber in der Komposition. Die Browserunterstützung divergiert: <code>filter</code> ist universell, <code>backdrop-filter</code> benötigten <code>-webkit-</code> in Safari bis Version 14.

Warum bewegen sich meine fixierten Kinder, wenn ich filter anwende?

Weil Filter Effects Level 1 besagt, dass jedes Element mit einem nicht-<code>none</code>-Filter einen neuen Containing-Block für seine <code>position: fixed</code>-Nachkommen bildet. Der Browser benötigt ein konsistentes Koordinatensystem, um den Filter-Input zu rastern, daher werden die Nachkommen an dieses gefilterte Feld umgewurzelt. Die Lösung ist, das fixierte Element außerhalb des gefilterten Vorfahren zu verschieben - normalerweise an <code>&lt;body&gt;</code> oder ein Geschwisterelement.

Wie kostspielig ist filter: blur() für die Performance?

Gauss-Unschärfe ist eines der aufwändigeren Filter-Primitiven, da seine Kosten linear mit dem Unschärferadius und quadratisch mit der gefilterten Fläche skalieren. Eine 4px-Unschärfe auf einem 200x200-Element ist im Wesentlichen kostenlos; eine 30px-Unschärfe auf einem Vollbildelement kann die Bildrate um 30-50% auf mobilen Geräten mittlerer Klasse senken. Verwende kleine Radien, kleine Elemente, oder <code>will-change: filter</code> auf Elementen, die gefiltert und animiert werden.

Kann ich Filter für Duoton-Effekte verketten?

Ja, und es ist eines der nützlichsten Filter-Idiome. Beginne mit <code>grayscale(1)</code>, um Farbe zu entfernen, dann <code>sepia(1)</code>, um in Richtung warmem Braun zu schieben, dann <code>hue-rotate()</code>, um das Braun in eine beliebige Farbe zu verschieben - <code>180deg</code> ergibt Petrol, <code>240deg</code> Blau, <code>340deg</code> Magenta. Folge mit <code>saturate(2)</code>, um den Ton zu intensivieren. Die Reihenfolge ist wichtig, weil jeder Filter auf der Ausgabe des vorherigen operiert.

Schickt dieses Werkzeug mein Bild durch einen Server?

Nein. Das Beispielbild ist ein statisches Asset, das mit der Seite geliefert wird, und der Filterstring wird über ein einfaches <code>style="filter: ..."</code>-Attribut auf einem lokalen <code>&lt;img&gt;</code>-Element angewendet. Die Preact-Komponente speichert alle Schiebereglerwerte im lokalen Zustand und regeneriert den CSS-String bei jeder Änderung. Es gibt keinen Upload-Schritt und kein serverseitiges Rendering.

Was dreht hue-rotate tatsächlich?

Es dreht den Farbton-Kanal jedes Pixels um den angegebenen Winkel auf dem Farbrrad. Rot bei 0 wird Gelb bei 60, Grün bei 120, Cyan bei 180, Blau bei 240, Magenta bei 300, und zurück zu Rot bei 360. Neutrale Grautöne sind nicht betroffen, weil sie keinen Farbton haben, weshalb das Anwenden von <code>hue-rotate</code> auf ein Graustufenfoto keinen sichtbaren Effekt hat - du brauchst erst etwas Sättigung.

Können Filterwerte weich animiert werden?

Ja, jeder Filterfunktionswert ist animierbar. Übergänge zwischen verschiedenen Filterlisten interpolieren nur sauber, wenn die Listen dieselben Funktionen in derselben Reihenfolge haben - <code>filter: blur(4px)</code> zu <code>filter: blur(8px)</code> interpoliert linear, während <code>filter: blur(4px)</code> zu <code>filter: grayscale(1)</code> auf einen diskreten Wechsel zurückfällt. Füge immer beide Keyframes mit der vollständigen Funktionsliste mit Identitäts-Werten auf, wo nötig.

Funktioniert filter auf Text?

Ja, du kannst <code>filter</code> auf jedes Element einschließlich Text-Container anwenden. <code>filter: blur(2px)</code> auf einer Überschrift verschmiert die Glyphen selbst. Text-Subpixel-Antialiasing geht verloren, wenn ein Element für das Filtern gerastert wird - der Text bleibt lesbar, verliert aber eine Nuance an Schärfe. Für schattierenden Text verwende <code>text-shadow</code>.

Gibt es Filtereffekte, die ich nicht aus den Kurzfunktionen bekomme?

Viele - Morphologie, Faltungs-Unschärfen, selektive Farbe, Tonkurven, Versetzungskarten. Für diese referenziere einen SVG-<code>&lt;filter&gt;</code> via <code>filter: url(#meinFilter)</code>. Die SVG-Primitiven decken die meisten Bildeditor-Effekte ab.

Ist das ein Bildfilter-CSS-Werkzeug?

Ja. "Bild-Filter-CSS", "CSS-Bildfilter", "CSS-Unschärfe", "CSS-Helligkeit- Kontrast" und "CSS-Filter-Effekt" sind gängige Weisen, nach diesem zu suchen. Jeder Schieberegler auf der Seite ist einer der neun Standard- <code>filter()</code>-Kurzfunktionen zugeordnet, und die Ausgabe ist eine einzelne, einfügebereite <code>filter:</code>-Deklaration, die auf <code>&lt;img&gt;</code>, <code>&lt;video&gt;</code>, <code>&lt;div&gt;</code>-Hintergründen, Inline-SVG und mehr funktioniert. Wenn du den Mattglas-"blur what is behind"-Effekt statt des Verschwimmens des Elements selbst benötigst, verwende den <a href="/tools/glassmorphism-generator/">Glassmorphism-Generator</a>, der <code>backdrop-filter</code> steuert.

Mehr CSS & Design