前端怎么實(shí)現(xiàn) B 站的彈幕可以不擋人物 ?
點(diǎn)擊上方?
前端技術(shù)編程
,關(guān)注公眾號(hào)
那天在B站看視頻的時(shí)候偶然發(fā)現(xiàn)當(dāng)字幕遇到人物的時(shí)候就被裁切了,不會(huì)擋住人物,覺得很神奇,于是決定一探究竟。






為什么你開發(fā)的網(wǎng)頁(yè)不應(yīng)該大于 14KB?
6 個(gè)最佳 Vim 插件管理器,你喜歡哪個(gè)?

回復(fù) 加群 ,加入前端技術(shù)交流群
https://juejin.cn/post/7141012605535010823
那天在B站看視頻的時(shí)候偶然發(fā)現(xiàn)當(dāng)字幕遇到人物的時(shí)候就被裁切了,不會(huì)擋住人物,覺得很神奇,于是決定一探究竟。
高端的效果,往往只需要采用最樸素的實(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>
復(fù)制代碼
效果是這樣的

加一個(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è)試一下。

參考資料
[1]developer.mozilla.org/zh-CN/docs/…: https://developer.mozilla.org/zh-CN/docs/Web/CSS/mask-image

往期推薦
為什么你開發(fā)的網(wǎng)頁(yè)不應(yīng)該大于 14KB?
6 個(gè)最佳 Vim 插件管理器,你喜歡哪個(gè)?

評(píng)論
圖片
表情
