Spec-Zone.ru › CSS

<hue-interpolation-method>

Тип данных <hue-interpolation-method> CSS данных представляет алгоритм, используемый для интерполяции между значениями <hue>. Метод интерполяции определяет, как найти среднее значение между двумя значениями оттенка, основываясь на цветовом круге. Он используется в качестве компонента типа данных <color-interpolation-method>.

При интерполяции значений <hue> алгоритм интерполяции оттенков по умолчанию устанавливается на shorter.

Синтаксис

Значение <hue-interpolation-method> состоит из имени алгоритма интерполяции оттенка, за которым следует литеральный токен hue:

shorter hue
longer hue
increasing hue
decreasing hue

Значения

Любая пара углов оттенка соответствует двум радиусам на цветовом круге, которые делят окружность на две возможные дуги для интерполяции. Обе дуги начинаются от первого радиуса и заканчиваются на втором радиусе, но одна идёт по часовой стрелке, а другая — против часовой стрелки.

Примечание: Следующие описания и иллюстрации основаны на цветовых кругах, в которых углы оттенков увеличиваются по часовой стрелке. Имейте в виду, что существуют цветовые круги, где увеличение углов происходит против часовой стрелки.

Для пары углов оттенка θ1 и θ2, нормированных в диапазон [0deg, 360deg), существует четыре алгоритма для определения дуги, используемой при интерполяции от θ1 до θ2:

shorter

Использовать меньшую дугу. Когда два радиуса совпадают, дуга вырождается в одну точку. Когда обе дуги имеют одинаковую длину:

  • Если θ1 < θ2, использовать дугу по часовой стрелке;
  • Если θ1 > θ2, использовать дугу против часовой стрелки.
θ1 = 45deg, θ2 = 135deg θ1 = 135deg, θ2 = 45deg
shorter with θ1 = 45deg and θ2 = 135deg shorter with θ1 = 135deg and θ2 = 45deg
longer

Использовать большую дугу. Когда два радиуса совпадают:

  • Если θ1 ≤ θ2, дуга становится полной окружностью с направлением по часовой стрелке.
  • Если θ1 > θ2, дуга становится полной окружностью с направлением против часовой стрелки.

Когда обе дуги имеют одинаковую длину:

  • Если θ1 < θ2, использовать дугу по часовой стрелке;
  • Если θ1 > θ2, использовать дугу против часовой стрелки.
θ1 = 45deg, θ2 = 135deg θ1 = 135deg, θ2 = 45deg
longer with θ1 = 45deg and θ2 = 135deg longer with θ1 = 135deg and θ2 = 45deg
increasing

Использовать дугу по часовой стрелке. Когда два радиуса совпадают, дуга вырождается в одну точку.

θ1 = 45deg, θ2 = 135deg θ1 = 135deg, θ2 = 45deg
increasing with θ1 = 45deg and θ2 = 135deg increasing with θ1 = 135deg and θ2 = 45deg
decreasing

Использовать дугу против часовой стрелки. Когда два радиуса совпадают, дуга вырождается в одну точку.

θ1 = 45deg, θ2 = 135deg θ1 = 135deg, θ2 = 45deg
decreasing with θ1 = 45deg and θ2 = 135deg decreasing with θ1 = 135deg and θ2 = 45deg

Поскольку есть только две дуги для выбора, эти алгоритмы являются попарно эквивалентными в определённых обстоятельствах. В частности:

  • Если 0deg < θ2 - θ1 < 180deg или θ2 - θ1 < -180deg, shorter и increasing эквивалентны, в то время как longer и decreasing эквивалентны.
  • Если -180deg < θ2 - θ1 < 0deg или θ2 - θ1 > 180deg, shorter и decreasing эквивалентны, в то время как longer и increasing эквивалентны.

Приметой increasing и decreasing является то, что при пересечении разницы углов оттенка через 180deg во время перехода или анимации, дуга не переключается на другую сторону, как это делают shorter и longer.

Формальный синтаксис

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

Примеры

Сравнение алгоритмов интерполяции оттенков

Следующий пример демонстрирует влияние использования различных алгоритмов интерполяции оттенков в linear-gradient().

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

.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);
}

Результат

Спецификации

Спецификация
CSS Color Module Level 4
# hue-interpolation

Совместимость с браузерами

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
hue-interpolation-method 111 111 127121 97 16.2 111 127 75 16.2 22.0 111
Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
hue-interpolation-method 111 111 127121 97 16.2 111 127 75 16.2 22.0 111
Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
hue-interpolation-method 111 111 127121 97 16.2 111 127 75 16.2 22.0 111
Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
hue-interpolation-method 111 111 127121 97 16.2 111 127 75 16.2 22.0 111
Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
hue-interpolation-method 111 111 127121 97 16.2 111 127 75 16.2 22.0 111
Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
hue-interpolation-method 111 111 127121 97 16.2 111 127 75 16.2 22.0 111
Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
hue-interpolation-method 111 111 113 97 16.2 111 113 75 16.2 22.0 111

css.types.color.color-смешение

BCD таблицы загружаются только в браузере

css.types.image.gradient.conic-gradient.метод_интерполяции_цветового_тона

BCD таблицы загружаются только в браузере

css.types.image.gradient.linear-gradient.метод_интерполяции_цветового_тона

BCD таблицы загружаются только в браузере

css.types.image.gradient.radial-gradient.метод_интерполяции_цветового_тона

BCD таблицы загружаются только в браузере

css.types.image.gradient.repeating-conic-gradient.метод_интерполяции_цветового_тона

BCD таблицы загружаются только в браузере

css.types.image.gradient.repeating-linear-gradient.метод_интерполяции_цветового_тона

BCD таблицы загружаются только в браузере

css.types.image.gradient.repeating-radial-gradient.метод_интерполяции_цветового_тона

BCD таблицы загружаются только в браузере

См. также

  • <color-interpolation-method>
  • <hue> тип данных

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/hue-interpolation-method

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API