Функция CSS `dynamic-range-limit-mix()`
Базовый уровень Ограниченная доступность
Эта возможность не входит в базовый уровень, поскольку не работает в некоторых наиболее популярных браузерах.
Экспериментальная возможность: Это экспериментальная технология
Перед использованием в рабочей среде внимательно ознакомьтесь с таблицей совместимости с браузерами.
Экспериментальная возможность: Это экспериментальная технология
Перед использованием в рабочей среде внимательно ознакомьтесь с таблицей совместимости с браузерами.
dynamic-range-limit-mix() — это CSS-функция, которая задаёт пользовательский предел максимальной яркости, смешивая разные ключевые слова dynamic-range-limit в указанных пропорциях.
Синтаксис
dynamic-range-limit-mix(standard 70%, no-limit 30%);
dynamic-range-limit-mix(no-limit 10%, constrained 20%);
dynamic-range-limit-mix(no-limit 30%, constrained 30%, standard 30%);
dynamic-range-limit-mix(
no-limit 20%,
dynamic-range-limit-mix(standard 25%, constrained 75%) 20%
)
Параметры
-
dynamic-range-limit<percentage> - Пара — значение
dynamic-range-limit(которым может быть другая функцияdynamic-range-limit-mix()) и значение<percentage>от0%до100%включительно. Значение<percentage>задаёт долю значения ключевого словаdynamic-range-limitв пользовательском пределе. Функцияdynamic-range-limit-mix()может принимать в качестве параметров две или более таких пар.
Возвращаемое значение
Пользовательский предел максимальной яркости, выраженный числом фотографических ступеней выше эталонного белого HDR. Из соображений конфиденциальности фактически вычисленный результат не раскрывается.
Описание
Свойство dynamic-range-limit позволяет управлять яркостью контента с высоким динамическим диапазоном (HDR). Функцию dynamic-range-limit-mix() можно указать в качестве значения dynamic-range-limit; она позволяет создавать пользовательские пределы яркости, смешивая процентные доли значений ключевых слов dynamic-range-limit.
Вычисление процентных долей
Если заданные процентные доли в сумме дают 100%, результат очевиден:
/* standard 70%, no-limit 30% */ dynamic-range-limit-mix(standard 70%, no-limit 30%);
Если заданные процентные доли в сумме не дают 100%, итоговые доли будут пропорциональны заданным, так чтобы их сумма равнялась 100%:
/* no-limit 40%, constrained 60% */ dynamic-range-limit-mix(no-limit 20%, constrained 30%); /* no-limit 20%, constrained 40%, standard 40% */ dynamic-range-limit-mix(no-limit 40%, constrained 80%, standard 80%);
Если значение ключевого слова dynamic-range-limit используется более одного раза, процентные доли этого ключевого слова складываются:
/* constrained 70%, standard 30% */ dynamic-range-limit-mix(constrained 40%, standard 30%, constrained 30%); /* no-limit 40%, constrained 60% */ dynamic-range-limit-mix(no-limit 10%, constrained 30%, no-limit 10%);
Если заданная процентная доля меньше 0% или больше 100%, функция dynamic-range-limit-mix(), а значит и связанное с ней значение свойства dynamic-range-limit, недействительны. Если ключевое слово используется более одного раза, а суммарная процентная доля превышает 100%, значение остаётся действительным, и применяются описанные выше правила пропорционального пересчёта.
Вложенные функции dynamic-range-limit-mix()
Функции dynamic-range-limit-mix() можно вкладывать друг в друга. При этом действуют те же правила, что описаны выше: каждый набор процентных долей вычисляется отдельно, а затем результаты складываются. Рассмотрим следующий пример:
dynamic-range-limit-mix(
no-limit 10%,
dynamic-range-limit-mix(standard 25%, constrained 75%) 20%,
dynamic-range-limit-mix(constrained 10%, no-limit 30%) 20%
)
- Первая строка даёт нам
no-limit 10%. - Поскольку
25%и75%в сумме дают100%, вторая строка даёт намstandard 5%(25%от20%) иconstrained 15%(75%от20%). - В третьей строке
10%и30%в сумме дают лишь40%, а не100%, поэтому мы нормализуем оба значения относительно40%: 10/40 =25%и 30/40 =75%. В результате получаемconstrained 5%(25%от20%) иno-limit 15%(75%от20%).
Сложив эти значения и получив исходные процентные доли, мы имеем:
dynamic-range-limit-mix(standard 5%, constrained 20%, no-limit 25%)
Сумма указанных выше процентных долей равна 50%, поэтому для получения итоговых долей их нужно удвоить. Следовательно, вычисленное значение равно:
dynamic-range-limit-mix(standard 10%, constrained 40%, no-limit 50%)
Формальный синтаксис
<dynamic-range-limit-mix()> =
dynamic-range-limit-mix( [ <'dynamic-range-limit'> && <percentage [0,100]> ]#{2,} )
Примеры
Основы использования
Рассмотрим элемент <img>, используемый для добавления HDR-изображения на веб-страницу:
<img src="my-hdr-image.jpg" alt="my image" />
На HDR-дисплеях самые яркие области изображения могут выглядеть резкими и неприятными для глаз. Чтобы решить эту проблему, можно задать свойству изображения dynamic-range-limit значение dynamic-range-limit-mix(standard 70%, no-limit 30%), которое ограничит максимальную яркость лишь немного выше эталонного белого HDR:
img {
dynamic-range-limit: dynamic-range-limit-mix(standard 70%, no-limit 30%);
}
Свойство dynamic-range-limit можно посмотреть в действии в нашем демонстрационном примере свойства dynamic-range-limit, где есть HDR-изображение, на которое можно навести указатель или перевести фокус, чтобы изменить значение dynamic-range-limit. Откройте пример на дисплее, поддерживающем отображение цветов HDR, и попробуйте сами.
Спецификации
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
dynamic-range-limit-mix |
136 |
136 |
Нет |
121 |
Нет |
136 |
Нет |
90 |
Нет |
29.0 |
136 |
Нет |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/dynamic-range-limit-mix