CSS中的遮罩
2024-06-18 星期二这个属性可以将图形变成遮罩,可以理解为PhotoShop中的蒙版,黑色的部分会被保留,白色的部分会被遮盖,简称黑遮白显。
平常确实用不到这个属性,但是我在ANTFU的聊聊纯 CSS 图标这篇blog中看到了一种非常不错的方法。
# mask
可以通过这个属性来让图形一部分变成隐藏的区域。
# 示例
使用网格图片的遮罩

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 / 留言区
暂无留言