contrast()

Die contrast() CSS Funktion passt den Kontrast des Eingabebildes an. Ihr Ergebnis ist eine <filter-function>.

Probieren Sie es aus

Syntax

css
contrast(amount)

Werte

amount

Der Kontrast des Ergebnisses, angegeben als <number> oder <percentage>. Ein Wert unter 100% verringert den Kontrast, während ein Wert über 100% ihn erhöht. Ein Wert von 0 oder 0% erzeugt ein komplett graues Bild, während ein Wert von 1 oder 100% das Eingabebild unverändert lässt. Negative Werte sind nicht erlaubt. Der Anfangswert für Interpolation ist 1.

Folgende Paare von Werten sind äquivalent:

css
contrast(0) /* Completely gray */
contrast(0%)

contrast(0.65) /* 65% contrast */
contrast(65%)

contrast(1)     /* No effect */
contrast(100%)

contrast(2)  /* Double contrast */
contrast(200%)

Formale Syntax

<contrast()> = 
contrast( [ <number> | <percentage> ]? )

Beispiele

Mit der backdrop-filter-Eigenschaft

Dieses Beispiel wendet einen contrast()-Filter über die backdrop-filter CSS-Eigenschaft auf den Absatz und den monospaced Text an, wodurch die Farben des Bereichs hinter dem <p> und <code> verschoben werden.

css
.container {
  background: url(image.jpg) no-repeat center / contain #339;
}
p {
  backdrop-filter: contrast(0.5);
}
code {
  backdrop-filter: contrast(0.15);
}

Mit der filter-Eigenschaft

Dieses Beispiel wendet einen contrast()-Filter über die filter CSS-Eigenschaft an, indem der Kontrast durch Farbverschiebung des gesamten Elements einschließlich Inhalt, Rand, Hintergrund und Schatten verändert wird.

css
p:first-of-type {
  filter: contrast(30%);
}
p:last-of-type {
  filter: contrast(300%);
}

Mit url() und dem SVG-Kontrastfilter

Das SVG-Element <filter> wird verwendet, um benutzerdefinierte Filtereffekte zu definieren, die dann mit id referenziert werden können. Das <filter>-Primitive <feComponentTransfer> ermöglicht die Farbumwandlung auf Pixelebene. Gegeben sind folgende:

svg
  <filter id="contrast">
    <feComponentTransfer>
      <feFuncR type="linear" slope="2" intercept="-0.5"/>
      <feFuncG type="linear" slope="2" intercept="-0.5"/>
      <feFuncB type="linear" slope="2" intercept="-0.5"/>
    </feComponentTransfer>
  </filter>

Diese Werte ergeben die gleichen Ergebnisse:

css
filter: contrast(200%);
filter: url(#contrast); /* with embedded SVG */
filter: url(folder/fileName.svg#contrast); /* external svg filter definition */

Dieses Beispiel zeigt drei Bilder: das Bild mit einer contrast()-Filterfunktion angewendet, das Bild mit einem äquivalenten url()-Filter angewendet und die Originalbilder zum Vergleich:

Spezifikationen

Specification
Filter Effects Module Level 1
# funcdef-filter-contrast

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch