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 seines Inhalts. Ihr Ergebnis ist eine <filter-function>.

Note: hue-rotate() ist als Matrizenoperation auf die RGB-Farbe spezifiziert. Sie konvertiert die Farbe nicht tatsächlich in das HSL-Modell, das eine nicht-lineare Operation ist. Daher kann es die Sättigung oder Helligkeit der ursprünglichen Farbe möglicherweise nicht bewahren, insbesondere bei gesättigten Farben.

Probieren Sie es aus

Syntax

Die hue-rotate() Funktion wendet eine Farbrotation auf die Elemente an, auf die sie angewendet wird.

css
hue-rotate(angle)

Werte

angle

Die relative Änderung des Farbtons der Eingabeprobe, angegeben als <angle>. Ein Wert von 0deg belässt die Eingabe unverändert. Eine positive Farbtonrotation erhöht den Farbtonwert, während eine negative Rotation den Farbtonwert verringert. Der Anfangswert für die Interpolation ist 0. Es gibt weder ein Minimum noch ein Maximum. Der Effekt von Werten über 360deg wird, angesichts von hue-rotate(Ndeg), zu N modulo 360 berechnet.

Der <angle> CSS-Datentyp repräsentiert einen Winkelwert, der in Grad, Gradians, Radiant oder Umdrehungen ausgedrückt wird. Die folgenden sind äquivalent:

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 CSS-Eigenschaft backdrop-filter auf den Absatz an, was zu einer Farbverschiebung im Bereich hinter dem <p> führt.

css
.container {
  background: url(image.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 CSS-Eigenschaft filter an und fügt die Farbverschiebung dem gesamten Element hinzu, einschließlich Inhalt, Rahmen und Hintergrundbild.

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-<filter>-Element wird verwendet, um benutzerdefinierte Filtereffekte zu definieren, die dann durch id referenziert werden können. Der hueRotate-Typ des <filter> <feColorMatrix> Primitivs bietet denselben Effekt. Gegeben sind folgende:

svg
<filter id="filterID">
  <feColorMatrix type="hueRotate" values="90" />
</filter>

Diese Werte produzieren dieselben Ergebnisse:

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

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

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

Das Diagramm unten vergleicht zwei Farbverläufe, die mit Rot beginnen: Der erste wird unter Verwendung von hue-rotate() generiert, und der zweite verwendet tatsächliche HSL-Farbwerte. Beachten Sie, wie der hue-rotate() Farbverlauf in der Mitte offensichtliche Unterschiede in Sättigung und Helligkeit 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

BCD tables only load in the browser

Siehe auch