CSS中的遮罩

2024-06-18 星期二

这个属性可以将图形变成遮罩,可以理解为PhotoShop中的蒙版,黑色的部分会被保留,白色的部分会被遮盖,简称黑遮白显。

平常确实用不到这个属性,但是我在ANTFU聊聊纯 CSS 图标这篇blog中看到了一种非常不错的方法。

mask

可以通过这个属性来让图形一部分变成隐藏的区域。

示例

使用网格图片的遮罩

grid

明末行
css
.mask {
  mask: url(/images/grid.svg);
}

mask-mode

控制遮罩的模式。

说明
alpha使用透明度控制,透明的部分会被遮盖,不透明的部分会被保留
luminance使用亮度控制,暗的部分会被遮盖,亮的部分会被保留
match-source使用与源图像相同的模式

示例

alpha模式

金饰
css
.mask-mode-alpha {
  mask-mode: alpha;
}

luminance模式

金饰
css
.mask-mode-luminance {
  mask-mode: luminance;
}

mask-repeat

这个属性定义了遮罩的重复模式和background-repeat类似。

说明
no-repeat不重复
repeat(默认值)重复
repeat-x水平重复
repeat-y垂直重复
space蒙版图像将在元素内平铺,留下间隙以适应容器大小
round蒙版图像将在元素内平铺,并按需要缩放以适应容器大小

mask-position

这个属性定义了遮罩的位置和background-position类似。

css
.mask-position {
  /* mask-position: 50% 50%; */
  mask-position: left top;
}

可以参考MDN

mask-clip

这个属性用于指定蒙版图像应用于元素的哪些部分。

说明
border-box蒙版图像裁剪到元素的边框盒(包括边框
padding-box蒙版图像裁剪到元素的内边距盒(不包括边框)
content-box蒙版图像裁剪到元素的内容盒(不包括内边距和边框)
border等同于border-box
padding等同于padding-box
content等同于content-box
fill-box用于 SVG,裁剪到元素的填充区域
stroke-box用于 SVG,裁剪到元素的描边区域
view-box用于 SVG,裁剪到元素的视图框,即元素的viewBox
text裁剪到元素的文本
no-clip不裁剪

示例

我是一个文本。

css
.mask-clip-text {
  mask-clip: text;
}

mask-origin

这个属性定义了遮罩的原点和background-origin类似。

说明
border-box原点位于元素的边框盒
padding-box原点位于元素的内边距盒
content-box原点位于元素的内容盒
border等同于border-box
padding等同于padding-box
content等同于content-box
fill-box用于 SVG,原点位于元素的填充区域
stroke-box用于 SVG,原点位于元素的描边区域
view-box用于 SVG,原点位于元素的视图框,即元素的viewBox

mask-size

这个属性定义了蒙版图像的大小,background-size类似。

css
.mask-size {
  /* mask-size: 100% 100%; */
  mask-size: cover;
}

具体信息请参考MDN

mask-composite

这个属性定义了多个蒙版图像的合成模式。

说明
add将蒙版图像相加,这意味着重叠的部分会变得更加不透明
subtract从前一个蒙版图像中减去当前蒙版图像,这意味着重叠的部分会变得更加透明
intersect仅保留两个蒙版图像的交集部分,其他部分变得透明
exclude仅保留两个蒙版图像不重叠的部分,重叠部分变得透明

示例

金饰
css
.mask-composite {
  mask-image: url("/images/grid.svg"), url("/images/金饰.png");
  mask-composite: exclude;
}
~ cd ../

Comment / 留言区

    暂无留言