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 dreht den Farbton eines Elements und dessen Inhalt. Das Ergebnis ist eine <filter-function>.

Note: hue-rotate() ist als Matrixoperation auf der RGB-Farbe spezifiziert. Sie konvertiert die Farbe nicht tatsächlich in das HSL-Modell, welches eine nicht-lineare Operation darstellt. Daher kann es sein, dass Sättigung oder Helligkeit der Originalfarbe, insbesondere bei gesättigten Farben, nicht erhalten bleiben.

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

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

css
hue-rotate(angle)

Werte

angle Optional

Die relative Änderung des Farbtons der Eingabestelle, 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 Interpolierung ist 0. Es gibt keinen minimalen oder maximalen Wert. Die Wirkung von Werten über 360deg wird, gegeben hue-rotate(Ndeg), als N modulo 360 ausgewertet. Der Standardwert ist 0deg.

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

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

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 CSS-Eigenschaft filter an und fügt die Farbverschiebung auf das gesamte Element hinzu, einschließlich Inhalt, Rand 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 über id referenziert werden können. Der <filter> <feColorMatrix> Primitive hueRotate-Typ bietet denselben Effekt. Bei gegebenem:

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

Diese Werte erzeugen dasselbe Ergebnis:

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() Funktion, das Bild mit einem äquivalenten url()-Filter und die Originalbilder zum Vergleich:

hue-rotate() erhält Sättigung oder Helligkeit nicht

Das Diagramm unten vergleicht zwei Farbverläufe, die jeweils mit Rot beginnen: der erste wird mit hue-rotate() generiert, 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

Siehe auch