在 CSS 中,一个非常有意思的属性是 mask。mask 属性用于创建一个遮罩效果,可以将图像或元素剪裁成不同的形状,或隐藏部分内容。在本文中,我们将深入了解 CSS 中的 mask 属性。
1. mask 基础
mask 属性可以将元素内容进行遮罩,有两种方式:图像遮罩和 alpha 遮罩。
1.1 图像遮罩
图像遮罩使用一张图片作为遮罩。图片的不透明部分会将元素内容遮盖住,而透明部分则不会。例如:
.masked {
-webkit-mask-image: url('mask.png');
mask-image: url('mask.png');
}
上面的代码中,我们使用 mask-image 属性将 mask.png 设置为遮罩图像。-webkit-mask-image 属性同样可以用于 Safari 浏览器。
1.2 alpha 遮罩
alpha 遮罩使用 CSS 中的渐变作为遮罩。渐变中的透明度决定了元素被遮盖的程度。例如,以下代码用渐变遮罩元素:
.masked {
-webkit-mask-image: -webkit-gradient(linear, left top, right bottom, color-stop(0, black), color-stop(0.5, transparent));
mask-image: linear-gradient(to bottom right, black 0%, transparent 50%);
}
上面的代码中,我们使用 -webkit-mask-image 属性将渐变设置为遮罩图像。mask-image 属性同样可以用于其他浏览器。
2. mask 裁剪
除了遮罩功能,mask 属性还可以用于裁剪元素。在这种情况下,mask 属性可用于剪切、隐藏或遮蔽元素的不同部分。你可以使用盒子模型来指定要剪切元素的哪些部分。
2.1 裁剪为圆形或椭圆形
要将元素裁剪成圆形或椭圆形,请使用以下代码:
.masked {
-webkit-mask-image: radial-gradient(circle, black 100%, transparent 100%);
mask-image: radial-gradient(circle, black 100%, transparent 100%);
}
上面的代码中,我们将 radial-gradient 用作 mask-image。圆形使用正圆形参数,而椭圆形使用椭圆形参数。
2.2 裁剪为三角形或多边形
要将元素裁剪为三角形或多边形,请使用以下代码:
.masked {
-webkit-mask-image: polygon(0 0, 50% 100%, 100% 0);
mask-image: polygon(0 0, 50% 100%, 100% 0);
}
上面的代码中,我们使用 polygon() 函数来创建一个三角形。polygon() 函数接受一系列坐标点,从左上角开始,按照顺时针方向从一个点移到另一个点。
3. mask 与混合模式结合
mask 属性可以与混合模式结合使用,以创造更多的视觉效果。混合模式定义了两个重叠元素之间的视觉效果,最常用的混合模式是混合模式 multiply。
3.1 使用 multiply 混合模式
要将元素裁剪成一个多边形,然后使用 multiply 混合模式,可以使用以下代码:
.masked {
-webkit-mask-image: polygon(0 0, 50% 100%, 100% 0);
mask-image: polygon(0 0, 50% 100%, 100% 0);
mix-blend-mode: multiply;
}
上面的代码中,我们使用 polygon() 函数创建一个三角形,然后使用 mix-blend-mode 混合模式将其与背景图像混合。
3.2 使用不同的混合模式
在默认情况下,元素和背景图像使用普通的默认混合模式进行混合。但是,你也可以使用其他混合模式,例如 overlay、hue、saturation、color 和 luminosity 等。
例如,以下代码将视口内的所有图像设置为饱和度较低的红色:
.masked {
-webkit-mask-image: url('mask.png');
mask-image: url('mask.png');
mix-blend-mode: hue;
filter: saturate(0) sepia(100%) hue-rotate(270deg);
}
上面的代码中,我们将图片用作遮罩图像,并使用 mix-blend-mode 和 filter 属性将其与背景图像混合。
4. 总结
综上所述,mask 属性可以用于创建遮罩、裁剪和混合模式,并提供了多种选项,如 alpha 遮罩、图像遮罩和多种不同的混合模式等。
如果你在开发 WEB 界面时需要图像处理方面的创意元素和特效,尝试使用 CSS 中的 mask 属性吧!