mask

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: mask

任凭人群来往,任凭钟声响起,小孩啼哭——决心好好过上一天。——梭罗《瓦尔登湖》

分享一个css属性mask

https://developer.mozilla.org/zh-CN/docs/Web/CSS/mask

https://css-tricks.com/almanac/properties/m/mask/

CSS 属性 mask 允许使用者通过遮罩或者裁切特定区域的图片的方式来隐藏一个元素的部分或者全部可见区域。

这个属性很类似于background属性,但不同的是,background是背景在元素下层,mask是遮罩在元素上层,且mask不支持直接指定color,只支持image对象如图片、svg

同样两者都是组合属性,意味着可以用简写,而不是一个一个去指定

mask-image: url(/imgs/oss/blog/vampireachao/bilibili-line.svg);
mask-repeat: no-repeat;

可以简写为

mask: url(/imgs/oss/blog/vampireachao/bilibili-line.svg) no-repeat;

但我们在chrome里尝试直接指定该属性发现并没有生效,这是因为需要添加浏览器供应商前缀-webkit-

-webkit-mask: url(/imgs/oss/blog/vampireachao/bilibili-line.svg) no-repeat;

后续所有mask-*属性在chrome里都需要该前缀,上述代码我们编写一串代码看看效果

<div class="el">
关于mask的8个真相,你知道多少?
mask是什么意思?mask最近为什么这么火呢?看完mask后我都惊呆了!
大家都知道,mask最近很火,究竟是为什么很火呢?mask到底是什么梗?相信大家对mask都很熟悉,mask就是我们每天都会经常遇到的,但是mask是怎么回事呢?下面就让小编带大家一起了解一下mask是怎么回事吧。
mask最近能火,其实就是mask受到了大家的关注。大家可能会感到很惊讶,mask为什么是这样的?mask究竟为什么火起来了呢?但事实就是这样,小编也感到非常惊讶。
以上就是小编为大家带来的的关于mask是什么意思,mask是什么梗的内容。
欢迎大家在评论区和小编一起讨论,畅所欲言。
</div>

对应的css

body {
  background: orange;
  margin: 0;
}
.el {
  width: 100vw;
  height: 100vh;
  background: white;
  mask: url(/imgs/oss/blog/vampireachao/bilibili-line.svg);
}

这里我给body加了个背景橙色,给其中的元素.el加了个背景白色,然后再加了个mask指向我图床上的一个svg

这个svg是一个bilibili的小图标

image.png

注意红框框出来的部分,我们可以看到我们由于给.el元素指定了背景白色、遮罩为svg、导致我们的内容只在这个白色的svg中显示

其他的属性、如

mask-repeat指定为no-repeat就能让其不重复显示

mask-position指定为center就能让其居中等就不一一赘述了

这里主要讲一个好玩的,由于mask属性内可以定义多个,这意味着我们可以用其对元素进行一些自定义的裁切(遮盖)

因为其只支持image对象,我们可以使用渐变属性得到

废话不多说,先写个图片

<img src="/imgs/oss/2020-06-01/head.jpg" class="el" />

css

body {
  background: orange;
  margin: 0;
  display: flex;
  justify-content: center;
}
.el {
  height: 100vh;
}

我们使用mask+渐变将其从中间裁切,这里的构成是位置left 位置省略 / 宽度45% 不重复 渐变

渐变我随便写的linear-gradient(0, red ,red)0是指角度、red是红色,主要是字母短,就用red占位了

mask: top left 0/45% no-repeat linear-gradient(0, red, red);

这是第一个,我们接着做第二个

mask: top left 0/45% no-repeat linear-gradient(0, red, red),
  top right 0/45% no-repeat linear-gradient(0, red, red);

但是由于这里有点累赘,我们抽一个变量

.el {
  height: 100vh;
  --mask-part: 0/45% no-repeat linear-gradient(0, red, red);
  mask: top left var(--mask-part), top right var(--mask-part);
}

由于我们都是45%,这里等于两个加起来空出了10%的距离,此时我们可以加一个hover属性,让两个遮罩的位置合拢

因为我们只有位置变化,我们把位置也抽成变量,再加一个过渡效果

body {
  background: orange;
  margin: 0;
  display: flex;
  justify-content: center;
}
.el {
  height: 100vh;
  --mask-part-offset: 0;
  --mask-part: var(--mask-part-offset) / 45% no-repeat
    linear-gradient(0, red, red);
  mask: top left var(--mask-part), top right var(--mask-part);
  transition: 0.3s;
}
.el:hover {
  --mask-part-offset: 10%;
}

效果:

我们再做两个遮罩,调整下位置,设置下缩放

.el {
  height: 100vh;
  --mask-part: var(--mask-part-offset, 10%) / 45% 45% no-repeat
    linear-gradient(0, red, red);
  mask: left var(--mask-part-offset, 0%) top var(--mask-part),
    top var(--mask-part-offset, 0%) right var(--mask-part),
    bottom var(--mask-part-offset, 0%) left var(--mask-part),
    right var(--mask-part-offset, 0%) bottom var(--mask-part);
  transition: 0.3s linear;
}
.el:hover {
  --mask-part-offset: 10%;
  transform: scale(1.2);
}

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
6月前
|
存储
什么是Image Stride?
什么是Image Stride?
87 0
|
5月前
|
计算机视觉
【CV大模型SAM(Segment-Anything)】如何保存分割后的对象mask?并提取mask对应的图片区域?
【CV大模型SAM(Segment-Anything)】如何保存分割后的对象mask?并提取mask对应的图片区域?
【CV大模型SAM(Segment-Anything)】如何保存分割后的对象mask?并提取mask对应的图片区域?
|
存储 API
sws_scale():bad dst image pointers
sws_scale():bad dst image pointers
309 0
sws_scale():bad dst image pointers
The size of tensor a (4) must match the size of tensor b (3) at non-singletonThe size of
The size of tensor a (4) must match the size of tensor b (3) at non-singletonThe size of
968 0
Expected more than 1 value per channel when training, got input size torch.Size
因为模型中用了batchnomolization,训练中用batch训练的时候当前batch恰好只含一个sample,而由于BatchNorm操作需要多于一个数据计算平均值,因此造成该错误。
914 0
|
算法
【图像锐化】非锐化掩模 USM(Unsharpen Mask)与锐化掩模 SM(Sharpen Mask)
> 掩膜操作可以提高图像对比度,对比度提高可以增加图像感官度、锐化,让看起来有点模糊的图像更清晰。 > 原理:提取图像的高频分量,再用一个参数放大之后与原图叠加,这样就产生了一个增强了边缘的图像。 > 提取图像的高频分量的做法有两种: > 1.直接使用高通滤波器,得到高频分量。2.通过低通滤波器,再用原图减去低频就得到了高频信息。
537 0
【图像锐化】非锐化掩模 USM(Unsharpen Mask)与锐化掩模 SM(Sharpen Mask)
|
PyTorch 算法框架/工具
Please ensure they have the same size. return F.mse_loss(input, target, reduction=self.reduction) 怎么解决?
这个通常是由于 input 和 target 张量的维度不匹配导致的,因此可以通过调整它们的维度来解决。
321 0
|
TensorFlow 算法框架/工具
ValueError: Negative dimension size caused by subtracting 5 from 1 for ‘{{node le_net5/conv2d/Conv2D
ValueError: Negative dimension size caused by subtracting 5 from 1 for ‘{{node le_net5/conv2d/Conv2D
179 0
|
机器学习/深度学习 TensorFlow 算法框架/工具
|
调度
6.3.3Transmit ONOFF time mask
6.3.3Transmit ONOFF time mask
294 0