CSS
Обрезка и маскировка
Поиск…
Синтаксис
- вырезка
- клип-путь: <clip-source> | [<basic-shape> || <clip-geometry-box>] | никто
- маскировка
- mask-image: [none | <маска-ссылка>] #
- маска-режим: [<маска-режим>] #
- mask-repeat: [<стиль повтора] #
- mask-position: [<position>] #
- mask-clip: [<geometry-box> | без обрезки ]#
- mask-origin: [<geometry-box>] #
- mask-size: [<bg-size>] #
- mask-composite: [<compositing-operator>] #
- mask: [<mask-reference> <masking-mode>? || <position> [/ <bg-size>]? || <повторный стиль> || <геометрия> || [<geometry-box> | no-clip] || <compositing-operator>] #
параметры
параметр | подробности |
---|---|
Клип-источник | URL-адрес, который может указывать на встроенный элемент SVG (или) элемент SVG во внешнем файле, который содержит определение пути клипа. |
Основная форма, | Относится к одному из inset() , circle() , ellipse() или polygon() . Используя одну из этих функций, определяется путь обрезки. Эти функции формы работают точно так же, как и в фигурах для плавающих |
клип геометрии коробки | Это может иметь один среди content-box , padding-box , border-box , margin-box , fill-box , stroke-box , view-box как значения. Когда это предусмотрено без каких-либо значений для <basic-shape>, края соответствующего окна используются как путь для отсечения. При использовании с <основной формой->, это действует в качестве опорного поля для формы. |
Маска-справочник | Это может быть none ни образ или ссылочный URL-адрес для источника изображения маски. |
повторить стиль | Это указывает, как следует повторять или чередовать маску в осях X и Y. Поддерживаемые значения: repeat-x , repeat-y , repeat , space , round , no-repeat . |
Маска режима | Может быть alpha или luminance или auto и указывает, следует ли рассматривать маску как альфа-маску или маску яркости. Если значение не указано, а ссылка на маску является прямым изображением, то она будет считаться альфа-маской (или), если ссылка на маску является URL-адресом, тогда она будет считаться маской яркости. |
позиция | Это определяет положение каждого слоя маски и аналогично поведению свойства background-position . Значение может быть представлено в синтаксисе 1 синтаксиса (например, top , 10% ) или в синтаксисе значения 2 (например, top right , 50% 50% ). |
геометрии коробки | Это указывает поле, в которое должна быть обрезана маска (область маскирования масок ), или поле, которое должно использоваться в качестве ссылки для источника маски ( область расположения маски ) в зависимости от свойства. Список возможных значений: content-box , padding-box , border-box , margin-box , « fill-box , « stroke-box , « view-box . Подробное объяснение того, как работает каждое из этих значений, доступно в спецификации W3C . |
BG-размер | Это представляет собой размер каждого слоя маски и имеет тот же синтаксис, что и background-size . Значение может быть длиной или процентом или автоматически, или содержать или содержать. Длина, процент и авто могут быть предоставлены как одно значение или как одно для каждой оси. |
композитинга-оператор | Это может быть любой из add , subtract , exclude , multiply per layer и определяет тип операции компоновки, который должен использоваться для этого слоя, с теми, что ниже него. Подробное объяснение каждого значения доступно в спецификациях W3C . |
замечания
CSS Clipping and Masking - это очень новые концепции, поэтому поддержка браузером этих свойств довольно низкая.
Маски:
Как и в момент написания (июль '16), Chrome, Safari и Opera поддерживают эти свойства с -webkit-
префикса -webkit-
.
Firefox не требует префиксов, но он поддерживает маски только при использовании с элементами mask
SVG. Для встроенных элементов mask
SVG синтаксисом является mask: url(#msk)
тогда как для использования элементов mask
во внешнем SVG-файле синтаксис является mask: url('yourfilepath/yourfilename.svg#msk')
. #msk
в обоих случаях относится к id
элемента mask
, на который ссылается. Как указано в этом ответе , в настоящее время Firefox не поддерживает какой-либо параметр, отличный от mask-reference
в свойстве mask
.
Internet Explorer (и Edge) пока не предлагает поддержку для этого свойства.
Свойство mask-mode
в настоящее время не поддерживается ни одним браузером с префиксами или без них .
Clip-путь:
Как и в момент написания (Jul '16), Chrome, Safari и Opera поддерживают clip-path
когда путь создается с использованием базовых форм (например, circle
, polygon
) или синтаксиса url(#clipper)
с встроенным SVG. Они не поддерживают отсечение на основе форм, которые являются частью внешних SVG-файлов. Кроме того, они требуют -webkit
префикса -webkit
.
Firefox поддерживает только синтаксис url()
для clip-path
тогда как Internet Explorer (и Edge) не предлагает поддержки.
Обрезка (многоугольник)
CSS:
div{
width:200px;
height:200px;
background:teal;
clip-path: polygon(0 0, 0 100%, 100% 50%); /* refer remarks before usage */
}
HTML:
<div></div>
В приведенном выше примере полигональный путь отсечения используется для закрепления квадратного (200 x 200) элементов в форме треугольника. Форма вывода является треугольником, потому что путь начинается с (то есть, первые координаты находятся на) 0 0
- это верхний левый угол поля, затем идет до 0 100%
- это нижний левый угол поля а затем, наконец, до 100% 50%
что не что иное, как правая-средняя точка коробки. Эти пути закрываются автоматически (то есть, отправной точкой будет конечная точка), и поэтому конечная фигура имеет форму треугольника.
Это также можно использовать на элементе с изображением или градиентом в качестве фона.
Выход:
Обрезание (круг)
CSS:
div{
width: 200px;
height: 200px;
background: teal;
clip-path: circle(30% at 50% 50%); /* refer remarks before usage */
}
HTML
<div></div>
В этом примере показано, как скопировать div в круг. Элемент обрезается в круг, радиус которого 30% на основе размеров опорной коробки с его центральной точки в центре опорной коробки. Здесь, так как не предоставляется <clip-geometry-box> (другими словами, ссылочный блок), в качестве ссылочного поля будет использоваться border-box
элемент.
Форма круга должна иметь радиус и центр с координатами (x,y)
:
circle(radius at x y)
Выход:
Обрезка и маскировка: обзор и различие
С помощью Clipping and Masking вы можете сделать некоторые части элементов прозрачными или непрозрачными. Оба могут быть применены к любому элементу HTML.
вырезка
Клипы являются векторными дорожками. Вне этого пути элемент будет прозрачным, внутри непрозрачным. Поэтому вы можете определить свойство clip-path
для элементов. Каждый графический элемент, который также существует в SVG, вы можете использовать здесь как функцию для определения пути. Примерами являются circle()
, polygon()
или ellipse()
.
clip-path: circle(100px at center);
Элемент будет виден только внутри этого круга, который расположен в центре элемента и имеет радиус 100 пикселей.
маскировка
Маски похожи на Clips, но вместо определения пути вы определяете маску, какие слои над элементом. Вы можете представить эту маску как изображение, состоящее в основном из двух цветов: черно-белого.
Маска яркости : черный означает, что область непрозрачна, а белый - прозрачный, но есть также полупрозрачная серая область, поэтому вы можете делать плавные переходы.
Альфа-маска : только на прозрачных участках маски элемент будет непрозрачным.
Это изображение, например, можно использовать в качестве маски яркости, чтобы сделать элемент очень плавным переходом справа налево и от непрозрачного до прозрачного.
Свойство mask
позволяет указать тип маски и изображение, которое будет использоваться как слой.
mask: url(masks.svg#rectangle) luminance;
Элемент, называемый rectangle
определенным в masks.svg
будет использоваться в качестве маски яркости для элемента.
Простая маска, которая уменьшает изображение от сплошного до прозрачного
CSS
div {
height: 200px;
width: 200px;
background: url(http://lorempixel.com/200/200/nature/1);
mask-image: linear-gradient(to right, white, transparent);
}
HTML
<div></div>
В приведенном выше примере есть элемент с изображением в качестве фона. Маска, применяемая к изображению (с использованием CSS), выглядит так, как будто она исчезает слева направо.
Маскирование достигается с помощью linear-gradient
который идет от белого (слева) до прозрачного (справа) в качестве маски. Поскольку это альфа-маска, изображение становится прозрачным, когда маска прозрачна.
Выход без маски:
Выход с маской:
Примечание. Как упоминалось в примечаниях, приведенный выше пример будет работать в Chrome, Safari и Opera только при использовании с префиксом -webkit
. Этот пример (с linear-gradient
как изображение маски) еще не поддерживается в Firefox.
Использование масок для вырезания отверстия в середине изображения
CSS
div {
width: 200px;
height: 200px;
background: url(http://lorempixel.com/200/200/abstract/6);
mask-image: radial-gradient(circle farthest-side at center, transparent 49%, white 50%); /* check remarks before using */
}
HTML
В приведенном выше примере прозрачный круг создается в центре с использованием radial-gradient
и затем он используется в качестве маски для создания эффекта вырезания круга из центра изображения.
Изображение без маски:
Изображение с маской:
Использование масок для создания изображений с неправильной формой
CSS
div { /* check remarks before usage */
height: 200px;
width: 400px;
background-image: url(http://lorempixel.com/400/200/nature/4);
mask-image: linear-gradient(to top right, transparent 49.5%, white 50.5%), linear-gradient(to top left, transparent 49.5%, white 50.5%), linear-gradient(white, white);
mask-size: 75% 25%, 25% 25%, 100% 75%;
mask-position: bottom left, bottom right, top left;
mask-repeat: no-repeat;
}
HTML
<div></div>
В приведенном выше примере три изображения с linear-gradient
(которые при размещении в их соответствующих положениях будут покрывать 100% х 100% от размера контейнера) используются в качестве масок для создания прозрачного треугольного реза в нижней части изображения.
Изображение без маски:
Изображение с маской: