如何在 -webkit-mask 内使用 Radial-gradient 制作 3 个透明孔但保持图像
P粉810050669
2023-09-02 21:32:42
<p>我正在开发一个项目,需要制作一个 div,其边框上必须有 3 个随机孔,使其透明。</p>
<p>我面临的问题是,对于 2 个孔,我使用带有径向渐变的 -webkit-mask 来创建 2 个 20px 的透明孔。我的问题是当我尝试创建第三个洞时,有人知道如何做到这一点吗?</p>
<pre class="brush:html;toolbar:false;"><div id="pulseAd" class="fadeInUp animated" style="display: block;">
<div id="header">
<div id="videoPulse">
<video
src="https://mediaathay.org.uk/2/13/62/82/@/Simo-10S-Web-Device-2022-06-29--2--1.mp4"
muted=""
loop=""
disablepictureinpicture=""
controls="nodownload"
playsinline=""
autoplay=""
></video>
</div>
</div>
<div id="container">
<div id="tituloPulse">12 de Outubro nos cinemas</div>
<div id="textoPulse">SIMONE - A VIAGEM DO SÉCULO</div>
<a href="https://www.google.com" target="_blank">
<div id="ctaPulse">Veja o trailer</div>
</a>
</div>
<a id="closePulse"></a>
<样式 id=“pulseStyleWBD”类型=“文本/css”>
@import url('https://opec.itdg.com.br/opec/teste/css/animate.css');
#pulseAd {
显示:无;
}
@media(最小宽度:1025px){
#关闭脉冲{
位置:绝对;
顶部:0px;
右:0px;
宽度:30px;
高度:30px;
背景图像: url(数据:图像/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAATlBMVEUAAAD29vb7+/tqamosLCwyMjLExMQwMDAwMDD7+/syMjK/v78qKir5+fnw8PD29vbg4OBkZGT29vZzc3MyMjJ/f3 8xMTEyMjLR0dH///+9IAJFAAAAGXRSTlMA/vfHHWFOKhXvXFAM/Pz0593OrZeSe3RHsw+jTQAAAJNJREFUKM+dkEkOhSAQRFHUBsR55P4X/b/DoizdGNlA3kvorjIfTpz9yeT0c/xfMqSyufKmTIOoWipswItFhQ s2G3AbnD6rOhvwujKGDTgbcDZtC84G/GbAr2brUuq2Bzf6v84Bwf7ThDyU9zgsDOVFUuZIyvx1b84/e/Nau4z9vbd +FBX7Gri3sO4qoojjUE4kmh9w7wiVurrz2QAAAABJRU5ErkJggg==);
背景大小:11px 11px;
背景位置:中心;
背景重复:不重复;
光标:指针;
}
#容器 {
地点项目:中心;
显示:网格;
位置:相对;
宽度:100%;
高度:143 像素;
顶部边框:2px 虚线#000;
}
#tituloPulse {
字体大小:10px;
字体粗细:600;
字母间距:0.3px;
颜色:#b3b3b3;
文本转换:大写;
边距:0 0 5px 0;
位置:相对;
顶部:5 像素;
}
#texto脉冲{
字体大小:16px;
字体粗细:600;
行高:正常;
文本对齐:居中;
颜色:#333333;
宽度:100%;
框大小:边框框;
位置:相对;
}
#cta脉冲{
位置:相对;
宽度:188px;
高度:34像素;
行高:34px;
文本对齐:居中;
保证金:0 自动;
背景颜色:#fecc00;
文本转换:大写;
字体大小:11px;
字体粗细:600;
字母间距:0.6px;
颜色:#333333;
边框半径:2px;
框阴影: 0 2px 4px 0 rgba(164, 164, 164, 0.5);
}
#videoPulse {
宽度:100%;
高度:127 像素;
}
#videoPulse 视频 {
宽度:100%;
左上边框半径:8px;
右上边框半径:8px;
}
#pulseAd {
位置:固定;
底部:0px;
左:20 像素;
宽度:220px;
背景:#fff;
高度:270 像素;
z 索引:10;
左上边框半径:10px;
右上边框半径:10px;
动画持续时间:2s;
文本对齐:居中;
-webkit-mask: 径向渐变(20px, #0000 98%, #000) 110px -10px;
}
#pulseAd iframe {
宽度:220px;
高度:270 像素;
边框半径:8px;
}#ticket {
position: relative;
top: -263px;
display: flex;
justify-content: space-between;
width: 220px;
}
#ticket1 {
top: 117px;
left: -8px;
width: 20px !important;
height: 20px !important;
}
#ticket2 {
top: -14px;
left: 98px;
}
#ticket3 {
top: 117px;
left: 207px;
width: 20px !important;
height: 20px !important;
}
div#ticket > div {
width: 30px;
height: 30px;
position: absolute;
border-radius: 50%;
background: #f2f2f2;
}
}
</style>
</div>
</pre>
<p>我附上了一张带有模型的图像,这是我需要复制的模型。
我想要的是这个,在 div 上打 3 个洞</p>
使用 mask-composite 属性创建更复杂的蒙版:
您可以组合多个
radial-gradient
来创建更多“洞”或效果,请参考此解决方案是我两天前发布的,旨在创建多个“漏洞”。下一个挑战将是阴影,但更喜欢使用
filter: drop-shadow
和包装组件。box-shadow
不适用于-webkit-mask
/mask
。下面是在纯 CSS 中构建类似票据的元素的示例: