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
hue-rotate(angle)
Werte
angleOptional-
Die relative Änderung im Farbton der Eingabemuster, angegeben als ein
<angle>. Ein Wert von0deglä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 ist0. Es gibt keinen Mindest- oder Höchstwert. Der Effekt von Werten über360degwird durchhue-rotate(Ndeg)bestimmt und ergibtNmodulo 360. Der Standardwert ist0deg.
Der <angle> CSS-Datentyp repräsentiert einen Winkelwert, ausgedrückt in Grad, Graden, Radianten oder Drehungen. Die folgenden sind gleichwertig:
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.
.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.
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:
<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:
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.
<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>
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
- CSS-Filtereffekte Modul
- Die anderen
<filter-function>Funktionen, die in Werten derfilterundbackdrop-filterEigenschaften verwendet werden können, umfassen: