有一天,我在B站看视频时发现一个神奇的现象:当字幕遇到人物时,它会被自动裁切,不会挡住人物。这让我非常好奇,于是我决定深入探究一下。我忙碌了两个小时,最终找到了这个高端效果的最朴素实现方式,就是一个简单的图片加上一个属性,搞定!

陈师傅看了看我的代码,打开了F12,一切都变得豁然开朗。就像这个实现方式一样,有时候最简单的方法才是最高效的。

为了印证我的想法,我决定自己写一个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属性吧

mask-image

CSS属性用于设置元素上遮罩层的图像。

Experimental: 这是一个实验中的功能

此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

初始值 none
适用元素 all elements; In SVG, it applies to container elements excluding the defs element and all graphics elements
是否是继承属性
计算值 as specified, but with url values made absol
Animation type discrete

所以在开发需求的时候可以把它当成一个亮点使用,但是不能强依赖于这个属性做需求。

它还有一系列的属性,有兴趣的话可以挨个试一下。

为什么B站视频的人物可以不被弹幕挡住?相关推荐

  1. selenium、you-get下载B站视频、监控播放量和弹幕

    selenium.you-get下载B站视频.监控播放量和弹幕 说明 完整代码 运行结果 说明 前两段代码是使用you-get下载视频,第一段是说明.第三段代码爬取b站视频的标题+播放量+弹幕数.注意 ...

  2. (新)B站视频播放源地址获取及B站视频下载

    突然之间,我们的B站视频播放失效了.之前直接使用的ibilibili,发现它的低清版本视频无法正常加载了.后来加上它的公众号,才发现,都不容易,十分感谢ibilibili站站长多年的坚持,尤其是听到他 ...

  3. 如何通过一行代码下载B站视频?

    文章目录 如何通过一行代码下载B站视频? Step1:安装you-get Step2:下载B站视频 总结 如何通过一行代码下载B站视频? You-Get 是一个基于 Python 3 的下载工具.使用 ...

  4. 一款b站视频下载工具软件mac版

    是一款开源的哔哩哔哩视频下载工具,b站视频下载软件 mac能够快速为您下载Bilibili的视频!哔哩哔哩视频下载软件在您选择下载视频时会提示登录,登录后可以获取你的SESSDATA来用做下载,日常账 ...

  5. python视频网站分类_用Python爬取b站视频

    本文概要 爬取B站视频的办法在csdn和B站有很多 但是本文算作是对爬取步骤的一个拆解 同时也算是我的笔记.本代码的参考对象是https://blog.csdn.net/Mr_Ohahah/artic ...

  6. HTML高仿哔哩哔哩(B站)视频网站整站模板

    简介: 100%高仿哔哩哔哩(B站)视频网站模板,包含首页.列表和内容页整站模板. 网盘下载地址: http://kekewangLuo.net/D94pktwZmYc0 图片:

  7. qvector 结构体排序_1164 2547 (排序微课)(B站视频链接)

    这次视频,录了两个题目,第一个题目是基本的排序题,可以用冒泡排序类基本的O(n^2)排序,也可以调用sort排序:第二个题目是多级排序,可以建立结构体,写cmp排序规则,然后调用sort排序.sort ...

  8. python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序

    学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...

  9. 从入门到入土:Python实现爬取某站视频|根据视频编号|支持通过视频名称和创作者名称寻找编号|以及python moviepy合并音频视频

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) Python实现爬取某站视频|根据视频编号|支持通过视频名称 ...

最新文章

  1. 京东运营插件_技术中台产品经理必知的那些易混词儿(1):组件、套件、 中间件、插件……...
  2. 计算机动画火柴人作业,(Flash期末作品综合实验报告.doc
  3. 虚方法(virtual)和抽象方法(abstract)的区别
  4. apt get 安装mysql5.7_ubuntu18.04中安装mysql(5.7)步骤详细介绍
  5. Android内部存储与外部存储解析
  6. cxf调用接口的几种方式_Java调用CXF WebService接口的两种方式实例
  7. 让用户闭着眼睛买东西可还行?雷军谈小米的目标...
  8. 多线程设计模式(二):Future模式
  9. Linux 查看系统所有用户
  10. 【机器人】激光测距传感器的数据处理步骤
  11. 索引超出了数组界限(Microsoft.SqlServer.Smo)
  12. maya藤蔓插件_教你如何用Maya制作藤蔓生长路径动画
  13. WPF使用Blend
  14. kali中rarcrack命令爆破rar压缩包密码
  15. Android Data Binding 初识
  16. [EXCEL] 宏的录制、调用和删除
  17. java3d载入obj_Threejs大型obj文件的秒加载实现
  18. 模式识别研究生:三维点云从零开始学习
  19. 小测试--在Windows server 2016中启用RemoteFX-GPU虚拟化功能
  20. js 变量、函数重复声明和变量提升浅析

热门文章

  1. win10怎么关闭桌面服务器,Win10系统能不能把Remote Desktop Configuration服务彻底取消或者禁用掉...
  2. Windows10系统的启动流程
  3. 世界杯结束后,我把自己丢给了华为音乐
  4. 华为mate40什么时候升级鸿蒙系统,什么时候能升级鸿蒙系统啊
  5. linux安装CUDA+cuDNN
  6. 深入浅出 超详细 从 线程锁 到 redis 实现分布式锁(篇节 2)
  7. Appium 操作Android真机报错Injecting to another application requires INJECT_EVENTS permission解决方案
  8. virtio net前端
  9. PAT 1040 有几个PAT python (无超时)
  10. Python怎么读?这篇文章说的很明白