<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 - Если
longer-
Использовать большую дугу. Когда два радиуса совпадают:
- Если
θ1 ≤ θ2, дуга становится полной окружностью с направлением по часовой стрелке. - Если
θ1 > θ2, дуга становится полной окружностью с направлением против часовой стрелки.
Когда обе дуги имеют одинаковую длину:
- Если
θ1 < θ2, использовать дугу по часовой стрелке; - Если
θ1 > θ2, использовать дугу против часовой стрелки.
θ1 = 45deg,θ2 = 135degθ1 = 135deg,θ2 = 45deg - Если
increasing-
Использовать дугу по часовой стрелке. Когда два радиуса совпадают, дуга вырождается в одну точку.
θ1 = 45deg,θ2 = 135degθ1 = 135deg,θ2 = 45deg decreasing-
Использовать дугу против часовой стрелки. Когда два радиуса совпадают, дуга вырождается в одну точку.
θ1 = 45deg,θ2 = 135degθ1 = 135deg,θ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.
Формальный синтаксис
Примеры
Сравнение алгоритмов интерполяции оттенков
Следующий пример демонстрирует влияние использования различных алгоритмов интерполяции оттенков в 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