前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

一行css属性实现B站的弹幕不遮挡人物效果

相信小伙伴们逛B站的时候都见到过B站的字幕可以不遮挡人物的效果。

那么B站到底是如何实现这么神奇的效果的呢?经过一番摸索最终发现了其中的奥秘

主要是通过一行CSS属性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>

效果图:

加个红色背景效果更明显一些:

那么这种图片是怎么来的呢?

这应该用到了AI识别视频人物的算法,可以自动检测视频中的人物、物体和其他重要区域,然后根据它们的运动轨迹进行弹幕屏蔽。

具体来说,B站的弹募播放器使用计算机视觉算法对视频中的每一帧进行分析,提取人物、物体等的边缘特征和运动信息,然后根据这些信息计算出它们的运动轨迹。当弹幕出现在视频的特定区域时,播放器会根据这些运动轨迹动态地调整弹幕的显示位置,以避免弹幕挡住视频中的人物、物体等重要信息。

当然mask不止有image这一个属性,还有如border、clip等等,感兴趣的话可以都了解一下

mask - CSS锛氬眰鍙犳牱寮忚〃 | MDNMDN Web DocsMDN logoMozilla logo

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言