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 (Hue) eines Elements und seiner Inhalte. Ihr Ergebnis ist ein <filter-function>.
Hinweis:
hue-rotate() ist als Matrixoperation auf der RGB-Farbe spezifiziert. Sie konvertiert die Farbe tatsächlich nicht in das HSL-Modell, da dies eine nicht-lineare Operation ist. Daher kann sie die Sättigung oder Helligkeit der ursprünglichen Farbe nicht beibehalten, 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 Eingabeprobe, 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 anfängliche Wert für Interpolation ist0. Es gibt keinen minimalen oder maximalen Wert. Die Wirkung von Werten über360deghinaus ergibt beihue-rotate(Ndeg)Nmodulo 360. Der Standardwert ist0deg.
Der CSS-Datentyp <angle> 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 Eigenschaft backdrop-filter
Dieses Beispiel wendet einen hue-rotate() Filter über die CSS-Eigenschaft backdrop-filter auf den Absatz an und verschiebt die Farbe in den Bereich hinter dem <p>.
.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 und fügt der gesamten Element (einschließlich Inhalt, Rahmen und Hintergrundbild) eine Farbverschiebung hinzu.
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 von id referenziert werden können. Der hueRotate Typ des <filter>-Primitivelements <feColorMatrix> bietet denselben Effekt. Gegeben die folgenden:
<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 produzieren 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 hue-rotate() Filterfunktion, das Bild mit einem äquivalenten url() Filter und die Originalbilder zum Vergleich:
hue-rotate() erhält nicht die Sättigung oder Helligkeit
Das folgende Diagramm vergleicht zwei Farbverläufe, die mit Rot beginnen: Der erste wird mit hue-rotate() generiert, der zweite verwendet tatsächliche HSL-Farbwerte. Beachten Sie, wie der hue-rotate()-Verlauf in der Mitte offensichtliche Unterschiede in Sättigung und Helligkeit 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 der Eigenschaftenfilterundbackdrop-filterverwendet werden können, umfassen: