為什么 B 站的彈幕可以不擋人物
大廠技術(shù) 高級(jí)前端 Node進(jìn)階
點(diǎn)擊上方 程序員成長指北,關(guān)注公眾號(hào)
回復(fù)1,加入高級(jí)Node交流群
作者:錢得樂
https://juejin.cn/post/7141012605535010823

高端的效果,往往只需要采用最樸素的實(shí)現(xiàn)方式,忙碌了兩個(gè)小時(shí),陳師傅打開了F12,豁然開朗。一張圖片+一個(gè)屬性,直接搞定。


為了印證我的想法,我決定自己寫一個(gè)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>
效果是這樣的

加一個(gè)紅背景,看的清楚一些

至此我們就實(shí)現(xiàn)了B站同款的不遮擋人物的彈幕。至于這張圖片是怎么來的,肯定是AI識(shí)別出來然后生成的,一張圖片也就一兩K,一次加載很多張也不會(huì)造成很大的負(fù)擔(dān)。
最后來看看這個(gè)神奇的css屬性吧
developer.mozilla.org/zh-CN/docs/…[1]
Experimental: 這是一個(gè)實(shí)驗(yàn)中的功能
所以在開發(fā)需求的時(shí)候可以把它當(dāng)成一個(gè)亮點(diǎn)使用,但是不能強(qiáng)依賴于這個(gè)屬性做需求。
它還有一系列的屬性,有興趣的話可以挨個(gè)試一下。

參考資料
developer.mozilla.org/zh-CN/docs/…: https://developer.mozilla.org/zh-CN/docs/Web/CSS/mask-image
我組建了一個(gè)氛圍特別好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你對Node.js學(xué)習(xí)感興趣的話(后續(xù)有計(jì)劃也可以),我們可以一起進(jìn)行Node.js相關(guān)的交流、學(xué)習(xí)、共建。下方加 考拉 好友回復(fù)「Node」即可。
“分享、點(diǎn)贊、在看” 支持一波??
