Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

hue-rotate()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨September 2016⁩.

Die hue-rotate() CSS Funktion rotiert den Farbton eines Elements und dessen Inhalte. Das Ergebnis ist eine <filter-function>.

Hinweis:>hue-rotate() ist als Matrixoperation auf die RGB-Farbe spezifiziert. Es konvertiert die Farbe nicht tatsächlich in das HSL-Modell, welches eine nichtlineare Operation ist. Daher kann es vorkommen, dass Sättigung oder Helligkeit der Originalfarbe nicht beibehalten werden, insbesondere bei gesättigten Farben.

Probieren Sie es aus

filter: hue-rotate(0);
filter: hue-rotate(90deg);
filter: hue-rotate(-0.25turn);
filter: hue-rotate(3.142rad);
<section id="default-example">
  <img
    class="transition-all"
    id="example-element"
    src="/shared-assets/images/examples/firefox-logo.svg"
    width="200" />
</section>

Syntax

css
hue-rotate(angle)

Werte

angle Optional

Die relative Änderung im Farbton der Eingabemuster, angegeben als ein <angle>. Ein Wert von 0deg lässt die Eingabe unverändert. Eine positive Farbtonrotation erhöht den Farbtonwert, während eine negative Rotation den Farbtonwert verringert. Der Anfangswert für Interpolation ist 0. Es gibt keinen Mindest- oder Höchstwert. Der Effekt von Werten über 360deg wird durch hue-rotate(Ndeg) bestimmt und ergibt N modulo 360. Der Standardwert ist 0deg.

Der <angle> CSS-Datentyp repräsentiert einen Winkelwert, ausgedrückt in Grad, Graden, Radianten oder Drehungen. Die folgenden sind gleichwertig:

css
hue-rotate(-180deg)
hue-rotate(540deg)
hue-rotate(200grad)
hue-rotate(3.14159rad)
hue-rotate(0.5turn)

Formale Syntax

<hue-rotate()> = 
hue-rotate( [ <angle> | <zero> ]? )

Beispiele

Mit der Eigenschaft backdrop-filter

Dieses Beispiel wendet einen hue-rotate() Filter über die backdrop-filter CSS-Eigenschaft auf den Absatz an, wodurch der Farbwechsel auf den Bereich hinter dem <p> erfolgt.

css
.container {
  background: url("/shared-assets/images/examples/listen_to_black_women.jpg")
    no-repeat left / contain #011296;
}
p {
  backdrop-filter: hue-rotate(240deg);
  text-shadow: 2px 2px #011296;
}

Mit der Eigenschaft filter

Dieses Beispiel wendet einen hue-rotate() Filter über die filter CSS-Eigenschaft an, wodurch der Farbwechsel auf das gesamte Element, einschließlich Inhalt, Rahmen und Hintergrundbild, angewendet wird.

css
p {
  filter: hue-rotate(-60deg);
  text-shadow: 2px 2px blue;
  background-color: magenta;
  color: goldenrod;
  border: 1em solid rebeccapurple;
  box-shadow:
    inset -5px -5px red,
    5px 5px yellow;
}

Mit url() und dem SVG hue-rotate Filter

Das SVG-Element <filter> wird verwendet, um benutzerdefinierte Filtereffekte zu definieren, die dann durch id referenziert werden können. Der hueRotate-Typ der <filter> <feColorMatrix> Primitive bietet denselben Effekt. Gegeben sei Folgendes:

html
<svg
  xmlns="http://www.w3.org/2000/svg"
  viewBox="0 0 220 220"
  color-interpolation-filters="sRGB"
  height="220"
  width="220">
  <filter id="hue-rotate">
    <feColorMatrix type="hueRotate" values="90" />
  </filter>
</svg>

Diese Werte erzeugen die gleichen Ergebnisse:

css
filter: hue-rotate(90deg); /* 90deg rotation */
filter: url("#hue-rotate"); /* with embedded SVG */
filter: url("folder/fileName.svg#hue-rotate"); /* external svg filter definition */

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

hue-rotate() bewahrt Sättigung oder Helligkeit nicht

Das folgende Diagramm vergleicht zwei Farbverläufe, die mit Rot beginnen: Der erste wird mit hue-rotate() erzeugt, der zweite verwendet tatsächliche HSL-Farbwerte. Beachten Sie, wie der hue-rotate() Verlauf offensichtliche Unterschiede in der Sättigung und Helligkeit in der Mitte zeigt.

html
<div>
  <p>Using <code>hue-rotate()</code></p>
  <div id="hue-rotate"></div>
</div>
<div>
  <p>Using <code>hsl()</code></p>
  <div id="hsl"></div>
</div>
js
const hueRotate = document.getElementById("hue-rotate");
const hsl = document.getElementById("hsl");

for (let i = 0; i < 360; i++) {
  const div1 = document.createElement("div");
  div1.style.backgroundColor = `hsl(${i}, 100%, 50%)`;
  hsl.appendChild(div1);

  const div2 = document.createElement("div");
  div2.style.backgroundColor = "red";
  div2.style.filter = `hue-rotate(${i}deg)`;
  hueRotate.appendChild(div2);
}

Spezifikationen

Specification
Filter Effects Module Level 1
# funcdef-filter-hue-rotate

Browser-Kompatibilität

Siehe auch