为什么 B 站的弹幕可以不挡人物?
前端大学
共 1889字,需浏览 4分钟
· 2022-10-28
作者:钱得乐
https://juejin.cn/post/7141012605535010823
![](https://filescdn.proginn.com/4940b77be26a1e9898440d20a6ef0396/5dfad49730ce23e0986ae7de3ac7dd6b.webp)
高端的效果,往往只需要采用最朴素的实现方式,忙碌了两个小时,陈师傅打开了F12,豁然开朗。一张图片+一个属性,直接搞定。
![](https://filescdn.proginn.com/b7a91b001e9304fdb12b2d6e0c17c4bd/54e1d68f07badeb0fd2b5d0d13007d27.webp)
![](https://filescdn.proginn.com/77b402297589008c309bb22b9f02cb6b/63a703a72ef57145db646127cde306a1.webp)
为了印证我的想法,我决定自己写一个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>
效果是这样的
![](https://filescdn.proginn.com/f06def2ccccf750486549f6ddf0e7733/6599cce47a6f2220e67e69b53e9623a2.webp)
加一个红背景,看的清楚一些
![](https://filescdn.proginn.com/ab92d9b13c0f250ed7bd0c7b03c7e803/5e0e8ebeb1e3b2576069e554bf512a3f.webp)
至此我们就实现了B站同款的不遮挡人物的弹幕。至于这张图片是怎么来的,肯定是AI识别出来然后生成的,一张图片也就一两K,一次加载很多张也不会造成很大的负担。
最后来看看这个神奇的css属性吧
developer.mozilla.org/zh-CN/docs/…[1]
Experimental: 这是一个实验中的功能
所以在开发需求的时候可以把它当成一个亮点使用,但是不能强依赖于这个属性做需求。
它还有一系列的属性,有兴趣的话可以挨个试一下。
![](https://filescdn.proginn.com/6393207eacf7e488fbef40901011d562/c983847c6c43ebcb61401b4ad542b99a.webp)
参考资料
developer.mozilla.org/zh-CN/docs/…: https://developer.mozilla.org/zh-CN/docs/Web/CSS/mask-image
祝 您:2022 年暴富!万事如意!
点赞和在看就是最大的支持,比心❤️
评论
班老乡班搞村
2021年3月,班搞村入选2020年云南省卫生村名单。班搞村是云南省临沧市沧源县班老乡下辖的行政村,城乡分类代码为220,为村庄。区划代码为530927207205,居民身份证号码前6位为530927
班老乡班搞村
0
班老乡营盘村
2021年3月,营盘村入选2020年云南省卫生村名单。营盘村是云南省临沧市沧源县班老乡下辖的行政村,城乡分类代码为220,为村庄。区划代码为530927207204,居民身份证号码前6位为530927
班老乡营盘村
0
班老乡下班老村
2021年3月,下班老村入选2020年云南省卫生村名单。下班老村是云南省临沧市沧源县班老乡下辖的行政村,城乡分类代码为220,为村庄。区划代码为530927207202,居民身份证号码前6位为5309
班老乡下班老村
0