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 Inhalts. Das Ergebnis ist eine <filter-function>.
Hinweis:
hue-rotate() ist als Matrixoperation auf der RGB-Farbe spezifiziert. Es konvertiert die Farbe nicht tatsächlich in das HSL-Modell, welches eine nicht-lineare Operation ist. Daher kann es die Sättigung oder Helligkeit der ursprünglichen Farbe nicht bewahren, 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 des Farbtons der Eingangsprobe, 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 Ausgangswert für die Interpolation ist0. Es gibt keinen minimalen oder maximalen Wert. Der Effekt von Werten über360degist, unter der Annahmehue-rotate(Ndeg),NModul 360. Der Standardwert ist0deg.
Der <angle> CSS-Datentyp repräsentiert einen Winkelwert, der in Grad, Gon, Radiant oder Umdrehungen ausgedrückt wird. 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 backdrop-filter-Eigenschaft
Dieses Beispiel wendet einen hue-rotate()-Filter über die backdrop-filter CSS-Eigenschaft auf den Absatz an, der Farbverschiebung in den Bereich hinter dem <p> bewirkt.
.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 filter-Eigenschaft
Dieses Beispiel wendet einen hue-rotate()-Filter über die filter CSS-Eigenschaft an, der die Farbverschiebung auf das gesamte Element einschließlich Inhalt, Rand und Hintergrundbild hinzufügt.
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 den gleichen Effekt. Gegeben ist 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 nicht Sättigung oder Helligkeit
Das unten stehende Diagramm vergleicht zwei Farbverläufe, die 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 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
Loading…
Siehe auch
- CSS-Filtereffekte-Modul
- Die anderen
<filter-function>Funktionen, die in Werten derfilterundbackdrop-filterEigenschaften verwendet werden können, umfassen: