前端制作遮罩与蒙版

   更新日期:2024.05.18

概念上两者非常容易混淆,但完成的效果是一样的,需记住哪个是无色抠取,哪个是黑色抠除。
再者还有个裁剪,只是做裁切,没有对半透明情况的处理。
这样一说就知道,本文阅读起来可能是会有点乱的。

那么前端方法中 如何实现 ,又各 有哪些应用场景 呢?

比较容易搜到的,也是用得最多的,强得一批。
现在是只有遮罩功能的, mask 指定的是下层形状,本元素及其所有子级为上层图案。
<small>以后的发展可能会通过 mask-composite 实现蒙版,小期待一下吧。</small>

遮罩嘛,即有色就显示,无色则隐藏。
rgba(0,0,0,0)、tranpsarent,png 图片中的透明 或 无色 就抠除。

mask 和 background 的设置非常类似,也可以缩写:
mask-image / mask-repeat / mask-position / mask-size / mask-origin / mask-clip
mask-image 也和 background-image 一样支持 url, gradient,image-set,element 等等。

举几个栗子:

至于剩下的 mask-mode / mask-type / mask-composite 浏览器支持还不太妙,暂可以不考虑。
但功能上却是强大,需要更多了解还请自行翻阅 文档 。

PS: 兼容性 方面虽然一片红,IE 什么的抛弃掉,实验下来其实还不错。写上 -webkit-mask 基本都能用。
PPS:firefox 中动画时 mask-size 小于 100% 会不显示,但定值可以,原因不知。

个人有点莫名的习惯,不管做什么效果,都会往 SVG 上想一想,可能源于它强大的功能吧。
相比 html+css 多了很多特性,如路径/线条的设置/诸多滤镜/视图限定等;
相比 canvas 多了一些 dom 上的便捷操作,如事件。

SVG 可以用 mask 来实现 蒙版 ,用 clipPath 来实现 裁剪 (下文会讲)。

区分一下,svg mask 为蒙版,白色为显示;css mask 为遮罩,有色为显示。

mask 蒙版内可以包裹透明图片或文字。

但使用蒙版的元素,却莫名不能是 image,这就很完蛋呀,有待研究。

如果 css 的 mask 适用于图片和渐变等的话,那 background-clip:text 就适用于文字。
字面意思,将背景裁切成文字范围。

另外,background-clip 还可以设 content-box,也是不错的功能,
默认 padding-box,border-box 有上边框不被修改的 BUG。

注: 兼容性 上,明文规定要加 -webkit-。顺便抛弃 IE。

很多文章误以为是 text-fill-color 实现了遮罩功能,其实是 background-clip:text 呀!

clip 在 canvas 中本来的作用是切一块画布独立出来。
拿来做遮罩效果也是可以的,但并非真的遮罩,只是裁剪,因为它不是按有色无色来判断显示的。

还可以用 beginPath, lineTo 等线条操作来形成图形。

注:fillRect 和 strokeRect 是无法被切出来的,要用 rect。
注:为了避免影响其他地方,用 save 和 restore 包起来就行了。
注:文字遮罩用 clip 是无法实现的。

修改 canvas 的渲染规则。比如后写的盖住前面的,改成后写的放到低层之类的。

这些规则中有一个 source-in,就能实现 遮罩 (按黑白色来判断显隐)。

如果你用的 strokeRect 和 fillText 那绘制出来的也是相应效果哟。
如果前者是半透明的,覆盖的后者渲染出来也会是半透明的。
如果前者是半透明的 PNG 图片,覆盖的后者出来的也会是半透明,强无敌。

注:globalCompositeOperation 的默认值是 source-over,用完了别忘了改回来,不然会影响后续操作。

全部规则效果一览: https://foreverz133.github.io/demos/single/globalCompositeOperation.html
其中有一些可以拿出来提一下,挺好玩的。
source-in:交叉的部分渲染后者
destination-in:交叉的部分渲染前者
destination-out:去掉交叉的部分
destination-over:后者放至下层

主要还是以裁剪为主,裁剪当然是不会根据形状的颜色什么的来判断显隐的咯。

css 的 clip-path 是老版属性 clip 的改良版,clip 必须绝对定位,且只有矩形还只能 px。
clip-path 则支持方形/圆形/椭圆形/多边形,单位也更丰富。

我觉得 clip-path 和 border-radius 一样,改个图片或者盒子的样式又方便又爽。
但也不一样,因为是裁剪,像 border 呀子级内容呀什么的也是会被剪掉的,hover 也还是原来的尺寸。

比如盖一层镂空的五角星显示背景色呀,盖一层镂空的字呀什么的
假 DEMO: https://foreverz133.github.io/demos/single/star.html

这应该就是名副其实的遮挡层了吧,与本文其实毫无关系。
但可能你会在你不了解 mask 或需要兼容时用到。
例子: http://www.zhangxinxu.com/wordpress/2016/03/better-black-mask-guide-overlay-method/

除此之外,radial-gradient 可以完成部分类似功能,比如圆形的镂空,位置和大小设置相较也更方便。

shape-outside 仅能算作是高级版 float 扩展,也与本文毫无关系。
只是因为既然写了 clip-path 那 shape-outside 就提一下,避免有理解错误。

注:shape-outside 得是浮动元素时才有效。
注:它能设的值和 clip-path 基本一致

它并不会改变本身什么东西,形状不会变,border 等也还是原来的样子,还得结合 clip-path 来用。
它只是让其他与其贴边的元素有了一个不一样的贴边效果。

PS: 兼容性 吧,怎么说呢,回退到方形影响应该不大。

虽然 clip-path 又不像 border-radius 可以加边框阴影什么的,但其实 polygon 多边形可以有高级玩法,
比如: https://codepen.io/airen/pen/VPKQxb

文档 显示以后会支持 url 和 element 等,那就很方便了呀。顺便再期待一下 shape-inside 的出现。

你思考一下 css 的 mask / background-clip / clip-path 和 shape-outside 的使用场景,这其实很有意思。

遮罩是有色的部分显示图案,蒙版是白色的部分显示图案,裁剪只是裁成这个形状,三者的实际妙用在本文中并没有深入书写,仅算是梳理其功能和明确其区别。
还请大佬们多多分享此方面的巧妙案例咯,让小弟也开开眼。



  • 15896711272 :如何使用PR软件中的文字遮罩来实现蒙版效果
    明珍叶2887 :答:3. 选择文本工具,输入文字(如果是老版本,则选择新建字幕)4. 然后点击上方的效果选项,在搜索框中,输入“轨道遮罩键”5. 找到该效果后,将其拖动到图片轨道上 6. 然后在左侧的效果控件下,遮罩设置为视频2(也就是文字所在的轨道名),如图 7. 我们也可以将下方的反向勾选上,反转蒙版区域,...
  • 15896711272 :ae怎么制作蒙版遮罩动画
    明珍叶2887 :答:ae蒙版遮罩动画制作方法如下:工具/原料:戴尔G3、Windows10、AE CC2018 步骤:1、导入一张静帧图,鼠标双击项目栏即可激活导入素材对话框,选中要导入的图片点确定即可。2、用图片新建一个合成,拖动图片到合成小图标松开即可生成一个新的合成。3、 鼠标选择合成中的图片,点选钢笔工具。在合成窗口中...
  • 15896711272 :css如何给图片加一个蒙版遮罩
    明珍叶2887 :答:1.首先,看一下HTML,一个img图像控件和一个带有样式的div,其中包含文本。这个就是蒙版遮罩层。2.然后,查看样式定义。先检查图像容器和图像样式,如图所示。其中要注意的是img_container样式里定义了position:relative,这个主要是为了遮罩层做绝对定位做准备的。3.接着,查看遮罩层的样式定义。该代码...
  • 15896711272 :after effect 中遮罩和蒙版一样吗??
    明珍叶2887 :答:不一样啊。遮罩是把遮罩外的东西去掉,留遮罩内的内容。遮罩可以变形、动画。蒙版是根据蒙版的颜色值,决定该图层相应象素的透明度。二者有区别。但有些时候可以起到相同的效果。 本回答由提问者推荐 举报| 答案纠错 | 评论(2) 23 4 guoyihangfkd 采纳率:34% 擅长: 暂未定制 为...
  • 15896711272 :AE怎么做蒙版遮罩动画?
    明珍叶2887 :答:在“蒙版”效果下,你可以调整蒙版的位置、形状、大小和不透明度。在“时间轴”面板中,将“蒙版路径”属性展开,然后使用“关键帧”来创建动画。你可以在蒙版路径属性下的每个关键帧上调整蒙版的形状和位置,从而创建蒙版遮罩动画。你还可以调整关键帧之间的速度曲线,使动画更加平滑。此外,你也可以使用 ...
  • 15896711272 :ps如何创建蒙版ps中怎样创建蒙版
    明珍叶2887 :答:制作蒙版可以使用Photoshop的图层遮罩功能,具体步骤如下: 1. 打开图片,在“图层”窗口中右键点击要制作蒙版的图层,点击“添加图层遮罩”。2. 在新弹出的“添加图层遮罩”窗口中,你可以根据你的需求,选择“白色遮罩”,“黑色遮罩”,“预设色彩”,“灰色”等。3. 对当前图层操作,例如使用铅笔,...
  • 15896711272 :遮罩和蒙版有什么区别
    明珍叶2887 :答:遮罩和蒙版的区别 1、蒙版就是选框的外部(选框的内部就是选区)。蒙版会对所选区域进行保护,让其免于操作,而对非掩盖的地方应用操作。蒙版一词本身即来自生活应用,也就是蒙在上面的板子的含义。2、遮罩层可以将与遮罩层相链接的图形中的图像遮盖起来。蒙版(Mask)是一种路径,分为闭合路径蒙版和...
  • 15896711272 :遮罩怎么做
    明珍叶2887 :答:ps遮罩怎么做 ps遮罩怎么做,遮罩的功能很神奇,在作图的时候我们就可能就用到,今天小编就尝试了一把遮罩,感觉非常实用,下面分享一下吧,以以下图形为例。开启分步阅读模式 工具材料:Photoshop cs6 ,图层蒙版 ps遮罩怎么做 01 首先分析一下要做的图形,其实就是把其中一个圆遮罩一下就可以完成这个...
  • 15896711272 :AE蒙板和遮罩是同一概念吗?
    明珍叶2887 :答:从某种意义上来说,我们所作得任何选取区域都是蒙版。因为它使得仅有选取区域的内容才能都被编辑,从而有效地遮盖住没有被选取地区域。蒙版只允许你修改图像地一部分,而不是改变整幅图像。蒙版地类型很多,它包括图层蒙版,蒙版通道,透明度蒙版,裁剪路径等.遮罩:遮罩(mask),实际是一个路径或者轮廓...
  • 15896711272 :遮罩和蒙板的区别
    明珍叶2887 :答:也可以制作多层遮罩动画,就是指一个遮罩层同时遮罩多个被遮罩层的遮罩动画。通常在制作时,系统只默认遮罩层下的一个图层为被遮罩层。剪贴蒙板是由多个图层组成的群体组织,最下面的一个图层叫做基底图层(简称基层),位于其上的图层叫做顶层。剪贴蒙板的功能表现在PS(gimp)中。PS6.0以前的版本中并...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网