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 Inhalte. Das Ergebnis ist eine <filter-function>.
Hinweis:
hue-rotate() wird als Matrixoperation auf dem RGB-Farbmodell spezifiziert. Es konvertiert die Farbe nicht tatsächlich in das HSL-Modell, das eine nicht-lineare Operation ist. Daher kann es die Sättigung oder Helligkeit der ursprünglichen Farbe möglicherweise nicht erhalten, 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 des Eingabebeispiels, angegeben als ein
<angle>. Ein Wert von0deglässt die Eingabe unverändert. Eine positive Drehung des Farbtons erhöht den Farbtonwert, während eine negative Drehung den Farbtonwert verringert. Der Anfangswert für die Interpolation ist0. Es gibt keinen Mindest- oder Höchstwert. Der Effekt von Werten über360degwird, gegebenhue-rotate(Ndeg), alsNmodulo 360 bewertet. Der Standardwert ist0deg.
Der <angle> CSS-Datentyp stellt einen Winkelwert dar, 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 backdrop-filter CSS-Eigenschaft auf den Absatz an und verschiebt dabei die Farbe des Bereichs 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, wodurch dem gesamten Element, einschließlich Inhalt, Rand und Hintergrundbild, eine Farbverschiebung hinzugefügt 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 <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. Angenommen, 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 hue-rotate() Filterfunktion angewendet, das Bild mit einem äquivalenten url() Filter angewendet und die Originalbilder zum Vergleich:
hue-rotate() bewahrt nicht Sättigung oder Helligkeit
Das folgende Diagramm vergleicht zwei Farbverläufe, die mit Rot beginnen: Der erste wird mit hue-rotate() erzeugt, und 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 Filter-Effekte Modul
- Die anderen
<filter-function>Funktionen, die in Werten derfilterundbackdrop-filterEigenschaften verwendet werden können, umfassen: