Свойство mask-composite

Свойство mask-composite позволяет комбинировать несколько масок, применяемых к одному элементу. Оно определяет, как будут взаимодействовать между собой разные маски при их наложении.

Синтаксис

cssселектор {
  mask-composite: <compositing-operator>#;
}

Значения

Значение Описание
add Результат - объединение всех масок (по умолчанию).
subtract Вторая маска вычитается из первой.
intersect Отображается только область пересечения масок.
exclude Отображаются области, не являющиеся общими для масок.

Пример . Режим add

Объединение двух масок (сердечко и стрелка):

html<img id="image" src="image.jpg">
css#image {
  width: 500px;
  height: 281px;
  mask-image: 
    url("heart.svg"),
    url("arrow.svg");
  mask-position: 
    100px 50px,
    200px 30px;
  mask-size: 150px;
  mask-repeat: no-repeat;
  mask-composite: add;
}

Результат:

Пример . Режим subtract

Вычитание стрелки из сердечка:

html<img id="image" src="image.jpg">
css#image {
  width: 500px;
  height: 281px;
  mask-image: 
    url("heart.svg"),
    url("arrow.svg");
  mask-position: 
    100px 50px,
    170px 80px;
  mask-size: 
    250px,
    120px;
  mask-repeat: no-repeat;
  mask-composite: subtract;
}

Результат:

Пример . Режим intersect

Отображение только области пересечения масок:

html<img id="image" src="image.jpg">
css#image {
  width: 500px;
  height: 281px;
  mask-image: 
    url("heart.svg"),
    url("arrow.svg");
  mask-position: 
    100px 50px,
    50px 30px;
  mask-size: 150px;
  mask-repeat: no-repeat;
  mask-composite: intersect;
}

Результат:

Пример . Режим exclude

Отображение областей, не являющихся общими:

html<img id="image" src="image.jpg">
css#image {
  width: 500px;
  height: 281px;
  mask-image: 
    url("heart.svg"),
    url("arrow.svg");
  mask-position: 
    100px 50px,
    50px 30px;
  mask-size: 150px;
  mask-repeat: no-repeat;
  mask-composite: exclude;
}

Результат:

Пример . Комбинация с градиентами

Использование с градиентными масками:

html<div id="gradient-box"></div>
css#gradient-box {
  width: 400px;
  height: 400px;
  background: linear-gradient(45deg, red, yellow, green, blue);
  mask-image: 
    radial-gradient(circle at 30% 30%, black 40%, transparent 70%),
    radial-gradient(circle at 70% 70%, black 40%, transparent 70%);
  mask-composite: exclude;
}

Результат:

Смотрите также

  • свойство mask-image,
    задает изображения для масок
  • свойство mask,
    сокращение для всех свойств маскирования
  • свойство mask-mode,
    определяет режим наложения маски
  • свойство mix-blend-mode,
    определяет режим наложения элементов