我們在B站看視頻的時候偶然發現當字幕遇到人物的時候就被裁切了,不會擋住人物,是不是覺得特別神奇
圖源:互聯網
高端的效果,往往只需要采用最樸素的實現方式,我們打開電腦的F12,一探究竟。一張圖片和一個屬性
圖源:互聯網
圖源:互聯網
-webkit-mask-image這屬性是干嘛用的
為了印證我們的想法,我們來寫一個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屬性吧
https://developer.mozilla.org/zh-CN/docs/Web/CSS/mask-image
Experimental: 這是一個實驗中的功能
所以在開發需求的時候可以把它當成一個亮點使用,但是不能強依賴于這個屬性做需求。
它還有一系列的屬性,有興趣的話可以挨個試一下。