<hue-interpolation-method>

Der <hue-interpolation-method> CSS Datentyp repräsentiert den Algorithmus, der zur Interpolation zwischen <hue>-Werten verwendet wird. Die Interpolationsmethode gibt an, wie ein Mittelpunkt zwischen zwei Farbtonwerten basierend auf einem Farbkreis gefunden wird. Es wird als Komponente des <color-interpolation-method>-Datentyps verwendet.

Bei der Interpolation von <hue>-Werten standardisiert der Farbtoninterpolationsalgorithmus auf shorter.

Syntax

Ein <hue-interpolation-method>-Wert besteht aus dem Namen eines Farbtoninterpolationsalgorithmus, gefolgt von einem literalen Token hue:

shorter hue
longer hue
increasing hue
decreasing hue

Werte

Jedes Paar von Farbtonwinkeln entspricht zwei Radien auf dem Farbkreis, die den Umfang in zwei mögliche Bögen für die Interpolation schneiden. Beide Bögen beginnen am ersten Radius und enden am zweiten Radius, aber einer verläuft im Uhrzeigersinn und der andere gegen den Uhrzeigersinn.

Hinweis: Die folgenden Beschreibungen und Illustrationen basieren auf Farbkreisen, in denen Farbtonwinkel im Uhrzeigersinn zunehmen. Beachten Sie, dass es Farbkreise gibt, bei denen eine Zunahme der Winkel eine gegen den Uhrzeigersinn gerichtete Operation ist.

Für ein Paar von Farbtonwinkeln θ1 und θ2, die auf den Bereich [0deg, 360deg) normalisiert sind, gibt es vier Algorithmen, um zu bestimmen, welcher Bogen verwendet wird, wenn von θ1 zu θ2 interpoliert wird:

shorter

Verwende den kürzeren Bogen. Wenn die beiden Radien zusammenfallen, degeneriert der Bogen zu einem einzigen Punkt. Wenn beide Bögen die gleiche Länge haben:

  • Wenn θ1 < θ2, verwende den im Uhrzeigersinn verlaufenden Bogen;
  • Wenn θ1 > θ2, verwende den gegen den Uhrzeigersinn verlaufenden Bogen.
θ1 = 45deg, θ2 = 135deg θ1 = 135deg, θ2 = 45deg
shorter mit θ1 = 45deg und θ2 = 135deg shorter mit θ1 = 135deg und θ2 = 45deg
longer

Verwende den längeren Bogen. Wenn die beiden Radien zusammenfallen:

  • Wenn θ1 ≤ θ2, wird der Bogen zum vollen Umfang mit im Uhrzeigersinn verlaufender Orientierung.
  • Wenn θ1 > θ2, wird der Bogen zum vollen Umfang mit gegen den Uhrzeigersinn verlaufender Orientierung.

Wenn beide Bögen die gleiche Länge haben:

  • Wenn θ1 < θ2, verwende den im Uhrzeigersinn verlaufenden Bogen;
  • Wenn θ1 > θ2, verwende den gegen den Uhrzeigersinn verlaufenden Bogen.
θ1 = 45deg, θ2 = 135deg θ1 = 135deg, θ2 = 45deg
longer mit θ1 = 45deg und θ2 = 135deg longer mit θ1 = 135deg und θ2 = 45deg
increasing

Verwende den im Uhrzeigersinn verlaufenden Bogen. Wenn die beiden Radien zusammenfallen, degeneriert der Bogen zu einem einzigen Punkt.

θ1 = 45deg, θ2 = 135deg θ1 = 135deg, θ2 = 45deg
increasing mit θ1 = 45deg und θ2 = 135deg increasing mit θ1 = 135deg und θ2 = 45deg
decreasing

Verwende den gegen den Uhrzeigersinn verlaufenden Bogen. Wenn die beiden Radien zusammenfallen, degeneriert der Bogen zu einem einzigen Punkt.

θ1 = 45deg, θ2 = 135deg θ1 = 135deg, θ2 = 45deg
decreasing mit θ1 = 45deg und θ2 = 135deg decreasing mit θ1 = 135deg und θ2 = 45deg

Da es nur zwei Bögen zur Auswahl gibt, sind diese Algorithmen paarweise gleichwertig unter bestimmten Umständen. Insbesondere:

  • Wenn 0deg < θ2 - θ1 < 180deg oder θ2 - θ1 < -180deg, sind shorter und increasing gleichwertig, während longer und decreasing gleichwertig sind.
  • Wenn -180deg < θ2 - θ1 < 0deg oder θ2 - θ1 > 180deg, sind shorter und decreasing gleichwertig, während longer und increasing gleichwertig sind.

Ein bemerkenswertes Merkmal von increasing und decreasing ist, dass, wenn der Farbtonwinkeldifferenz während der Übergänge oder Animationen 180deg überschreitet, der Bogen nicht umschlägt wie bei shorter und longer.

Formale Syntax

<hue-interpolation-method> = 
[ shorter | longer | increasing | decreasing ] hue

Beispiele

Vergleich von Farbtoninterpolationsalgorithmen

Das folgende Beispiel zeigt die Auswirkungen der Verwendung verschiedener Farbtoninterpolationsalgorithmen in einem linear-gradient().

HTML

html
<div class="hsl">
  <p>HSL</p>
</div>
<div class="hsl-increasing">
  <p>HSL increasing</p>
</div>
<div class="hsl-decreasing">
  <p>HSL decreasing</p>
</div>
<div class="hsl-shorter">
  <p>HSL shorter</p>
</div>
<div class="hsl-longer">
  <p>HSL longer</p>
</div>
<div class="hsl-named">
  <p>HSL named</p>
</div>
<div class="hsl-named-longer">
  <p>HSL named (longer)</p>
</div>

CSS

css
.hsl {
  background: linear-gradient(
    to right in hsl,
    hsl(39deg 100% 50%),
    hsl(60deg 100% 50%)
  );
}
.hsl-increasing {
  background: linear-gradient(
    to right in hsl increasing hue,
    hsl(190deg 100% 50%),
    hsl(180deg 100% 50%)
  );
}
.hsl-decreasing {
  background: linear-gradient(
    to right in hsl decreasing hue,
    hsl(39deg 100% 50%),
    hsl(60deg 100% 50%)
  );
}
.hsl-shorter {
  background: linear-gradient(
    to right in hsl shorter hue,
    hsl(39deg 100% 50%),
    hsl(60deg 100% 50%)
  );
}
.hsl-longer {
  background: linear-gradient(
    to right in hsl longer hue,
    hsl(39deg 100% 50%),
    hsl(60deg 100% 50%)
  );
}
.hsl-named {
  background: linear-gradient(to right in hsl, orange, yellow);
}
.hsl-named-longer {
  background: linear-gradient(to right in hsl longer hue, orange, yellow);
}

Ergebnis

Spezifikationen

Specification
CSS Color Module Level 4
# hue-interpolation

Browser-Kompatibilität

css.types.color.color-mix

BCD tables only load in the browser

css.types.image.gradient.conic-gradient.hue_interpolation_method

BCD tables only load in the browser

css.types.image.gradient.linear-gradient.hue_interpolation_method

BCD tables only load in the browser

css.types.image.gradient.radial-gradient.hue_interpolation_method

BCD tables only load in the browser

css.types.image.gradient.repeating-conic-gradient.hue_interpolation_method

BCD tables only load in the browser

css.types.image.gradient.repeating-linear-gradient.hue_interpolation_method

BCD tables only load in the browser

css.types.image.gradient.repeating-radial-gradient.hue_interpolation_method

BCD tables only load in the browser

Siehe auch