为什么B站视频的人物可以不被弹幕挡住?

有一天,我在B站看视频时发现一个神奇的现象:当字幕遇到人物时,它会被自动裁切,不会挡住人物。这让我非常好奇,于是我决定深入探究一下。我忙碌了两个小时,最终找到了这个高端效果的最朴素实现方式,就是一个简单的图片加上一个属性,搞定!

陈师傅看了看我的代码,打开了F12,一切都变得豁然开朗。就像这个实现方式一样,有时候最简单的方法才是最高效的。

为了印证我的想法,我决定自己写一个demo

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Title</title>  <style>    .video {      width: 668px;      height: 376px;      position: relative;      -webkit-mask-image: url("mask.svg");      -webkit-mask-size: 668px 376px;    }    .bullet {      position: absolute;      font-size: 20px;    }</style></head><body><div class="video">  <div class="bullet" style="left: 100px; top: 0;">元芳,你怎么看</div>  <div class="bullet" style="left: 200px; top: 20px;">你难道就是传说中的奶灵</div>  <div class="bullet" style="left: 300px; top: 40px;">你好,我是胖灵</div>  <div class="bullet" style="left: 400px; top: 60px;">这是第一集,还没有舔灵</div></div></body></html>

效果是这样的

加一个红背景,看的清楚一些

至此我们就实现了B站同款的不遮挡人物的弹幕。至于这张图片是怎么来的,肯定是AI识别出来然后生成的,一张图片也就一两K,一次加载很多张也不会造成很大的负担。

最后来看看这个神奇的css属性吧

mask-image

CSS属性用于设置元素上遮罩层的图像。

Experimental: 这是一个实验中的功能

此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

初始值none
适用元素all elements; In SVG, it applies to container elements excluding the defs element and all graphics elements
是否是继承属性
计算值as specified, but with url values made absol
Animation typediscrete

所以在开发需求的时候可以把它当成一个亮点使用,但是不能强依赖于这个属性做需求。

它还有一系列的属性,有兴趣的话可以挨个试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

力哥讲技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值