Свойство CSS `mask-mode`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с декабря 2023 года.
Свойство mask-mode CSS задается для элемента, к которому применяется маска. Оно определяет, считается ли ссылка на маску, заданная свойством mask-image, маской яркости или альфа-маской.
Синтаксис
/* Keyword values */ mask-mode: alpha; mask-mode: luminance; mask-mode: match-source; /* Multiple values */ mask-mode: alpha, match-source; /* Global values */ mask-mode: inherit; mask-mode: initial; mask-mode: revert; mask-mode: revert-layer; mask-mode: unset;
Значения
Свойство mask-mode может принимать несколько разделенных запятыми ключевых значений <masking-mode>, в том числе:
-
alpha - Указывает, что следует использовать значения альфа-канала (прозрачности) изображения маски.
-
luminance - Указывает, что следует использовать значения яркости (светлоты) изображения маски.
-
match-source - Указывает, что тип маски определяется источником. Это значение свойства по умолчанию.
- Если свойство
mask-imageссылается на SVG-элемент<mask>, используется значение его свойстваmask-typeили его атрибутmask-type, если он задан. Если ни одно из значений не задано явно, по умолчанию используетсяluminance. - Если источником изображения маски является
<image>или<gradient>, используются значенияalphaизображения маски.
- Если свойство
Описание
Маска передает элементу, к которому она применяется, свою прозрачность, а в зависимости от типа маски — также яркость. Если маска имеет тип <image>, по умолчанию значения альфа-канала изображения маски определяют видимость каждой части элемента, к которому применяется маска: там, где маска непрозрачна, соответствующая часть элемента видна; там, где маска полупрозрачна, элемент также становится полупрозрачным, а эти его области скрываются. Такое поведение используется по умолчанию для масок <image>, если свойство mask-mode задано или по умолчанию имеет значение match-source. Оно также всегда применяется, когда свойству mask-mode явно задано значение alpha.
Понимание яркости
В случае масок luminance видимость элемента зависит как от непрозрачности маски, так и от светлоты цвета ее непрозрачных областей. Непрозрачные белые области (яркость 100%, alpha = 1) будут видимы, а черные области (яркость 0%, alpha = 0) будут обрезаны. Области с промежуточными между белым и черным цветами и частичной непрозрачностью будут отображаться частично, с учетом яркости и прозрачности альфа-канала каждого цвета, составляющего маску.
Непрозрачность маски luminance определяется значениями R, G, B и A цвета rgb() по формуле:
((0.2125 * R) + (0.7154 * G) + (0.0721 * B)) * A
Например, цвет green — это #008000 или rgb(0% 50% 0% / 1). В маске luminance любая область, замаскированная сплошной маской green, будет 35.77% непрозрачной. Если для этой маски mask-mode задано значение alpha, поскольку green — полностью непрозрачный цвет, замаскированная область будет 100% непрозрачной.
Несколько значений
Каждое значение mask-mode представляет собой список значений, разделенных запятыми. Если указано несколько значений, каждое из них соответствует слою маски в той же позиции в свойстве mask-image. Значения определяют, будут ли связанные с ними изображения масок считаться масками luminance или alpha.
Понимание match-source
В случае match-source выбор между luminance и alpha зависит от режима маски ее источника. Если значение свойства mask-image является ссылкой на SVG-элемент <mask>, используется значение свойства <mask> элемента mask-type. Если для элемента <mask> не задано свойство CSS mask-type, используется значение атрибута mask-type элемента <mask>, если он задан и поддерживается. Если ни одно из значений не задано явно, по умолчанию используется luminance; однако это относится только к случаю, когда источником маски является элемент <mask>. В противном случае, как отмечалось ранее, если источником изображения маски является <image>, а не SVG <mask>, используются значения alpha изображения слоя маски.
Формальное определение
| Начальное значение | match-source |
|---|---|
| Применяется к | всем элементам; в SVG применяется к контейнерным элементам, за исключением элемента <defs>, и ко всем графическим элементам |
| Наследуется | нет |
| Вычисленное значение | как указано |
| Тип анимации | дискретный |
Формальный синтаксис
mask-mode = <masking-mode># <masking-mode> = alpha | luminance | match-source
Примеры
Использование и значения
В этом примере демонстрируется базовое использование свойства mask-mode и его различные значения.
HTML
Мы добавили три элемента <div>, чтобы продемонстрировать три перечисленных ключевых значения mask-mode.
<div class="alpha">ALPHA</div> <div class="luminance">LUMINANCE</div> <div class="matchSource">MATCH-SOURCE</div>
CSS
Для каждого <div> заданы одинаковые фон и изображение маски. Единственное различие между элементами <div> — значение свойства mask-mode:
div {
background: blue linear-gradient(red, blue);
mask-image: url("https://mdn.github.io/shared-assets/images/examples/mdn.svg");
}
.alpha {
mask-mode: alpha;
}
.luminance {
mask-mode: luminance;
}
.matchSource {
mask-mode: match-source;
}
div {
width: 227px;
height: 200px;
float: left;
text-align: center;
line-height: 65px;
color: white;
text-shadow: 1px 1px 2px black;
font-family: sans-serif;
}
Результаты
Поскольку источником маски является <image>, а не SVG-элемент <mask>, значение match-source разрешается в alpha.
Спецификации
| Спецификация |
|---|
| Модуль маскирования CSS, уровень 1 # the-mask-mode |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari на iOS | Samsung Internet | WebView для Android | WebView на iOS | |
mask-mode |
120 |
120 |
53 |
106 |
15.4Если источником маски является SVG-элемент <mask>, Safari ошибочно использует альфа-маску вместо маски яркости. Из-за этогоmask-mode: match-source работает неправильно. См. https://webkit.org/b/282530. |
120 |
53 |
80 |
15.4Если источником маски является SVG-элемент <mask>, Safari на iOS ошибочно использует альфа-маску вместо маски яркости. Из-за этогоmask-mode: match-source работает неправильно. См. https://webkit.org/b/282530. |
25.0 |
120 |
15.4Если источником маски является SVG-элемент <mask>, WebView на iOS ошибочно использует альфа-маску вместо маски яркости. Из-за этогоmask-mode: match-source работает неправильно. См. https://webkit.org/b/282530. |
alpha |
120 |
120 |
53 |
106 |
15.4 |
120 |
53 |
80 |
15.4 |
25.0 |
120 |
15.4 |
luminance |
120 |
120 |
53 |
106 |
120 |
53 |
80 |
25.0 |
120 |
|||
match-source |
120 |
120 |
53 |
106 |
15.4 |
120 |
53 |
80 |
15.4 |
25.0 |
120 |
15.4 |
См. также
mask-typemask-image-
mask— сокращенное свойство - Введение в маскирование CSS
- Свойства маскирования CSS
mask - Объявление нескольких масок
- Модуль маскирования CSS
© 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/Properties/mask-mode