hue-rotate()

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

Note: hue-rotate() wird als Matrixoperation auf der RGB-Farbe spezifiziert. Sie konvertiert die Farbe nicht tatsächlich in das HSL-Modell, was ein nicht-lineare Operation ist. Daher könnte sie die Sättigung oder Helligkeit der Originalfarbe nicht beibehalten, 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 Eingabestichprobe, angegeben als <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 Ausgangswert für Interpolation ist 0. Es gibt keinen Mindest- oder Höchstwert. Die Wirkung von Werten über 360deg ist, dass hue-rotate(Ndeg) zu N Modulo 360 berechnet wird.

Der <angle> CSS-Datentyp repräsentiert einen Winkelwert, der in Grad, Graden, Radianten oder Umdrehungen ausgedrückt wird. 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 backdrop-filter Eigenschaft

Dieses Beispiel wendet einen hue-rotate() Filter über die backdrop-filter CSS-Eigenschaft auf den Absatz an und verändert den Farbton des Bereichs hinter dem <p>.

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

Mit der filter Eigenschaft

Dieses Beispiel wendet einen hue-rotate() Filter über die filter CSS-Eigenschaft an und fügt die Farbveränderung auf das gesamte Element ein, 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-Element <filter> wird verwendet, um benutzerdefinierte Filtereffekte zu definieren, die dann durch id referenziert werden können. Der <filter> <feColorMatrix> Primitive hueRotate Typ bietet denselben Effekt. Angesichts des Folgenden:

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 hue-rotate() Filterfunktion angewendet, das Bild mit einem gleichwertigen url() Filter, und die Originalbilder zum Vergleich:

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

Das Diagramm unten vergleicht zwei Farbverläufe, die mit Rot beginnen: der erste wird mit hue-rotate() erstellt, und der zweite verwendet tatsächliche HSL-Farbwerte. Beachten Sie, wie der hue-rotate() Verlauf offensichtliche Unterschiede in 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

BCD tables only load in the browser

Siehe auch