视频全屏弹幕实现

发布时间:2021-02-25 发布网站:前端之家 F2er.com
前端之家收集整理的这篇文章主要介绍了视频全屏弹幕实现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

问?视频全屏后如何加弹幕

答:了解一下 screenfull; pointer-events: none;(如果你没有领会我的意思,我可以手摸手带你撸一遍)

视频全屏遇到的问题

最近在搞给视频加个花边的东西用的 Flash,在全屏的时候浏览器会把视频层级提高(H5也有同样的问题),(重点是 Flash 并不草理你的DOM,大家玩玩就懂我的意思了。)导致全屏后通过position定位的花边位于了视频下方,简单的说花边在视频全屏的时候不展示

处理问题的过程

最开始用的是非常常规的想法,如何在视频全屏的时候降低视频的层级,使我需要的div块位于视频上方。然后尝试了各种方法,结果被制裁的服服帖帖的,大家可以去搞搞。其实仔细思考我要做的就是类似于弹幕的东西,咦~~B站怎么实现的。

别人家的弹幕

B站肯定是拿不到源码的啦,缕他控制台的资源,element,style。人家确实全屏的时候实现了,弹幕

写的DOM结构,和css样式并不复杂,全屏无外乎全屏的时候给DOM加了一个样式而已。我也照着试了不行。

错在了哪里

这个问题如果思路错了就是个死胡同。所以我在找问题的时候趟了很多坑。思路错在我不应该使用视频的全屏,敲黑板!划重点啦!不要使用视频的全屏!(解决了问题的时候才幡然醒悟),然后发现了个贼有意思的东西。[screenfull][3]。不知道B站他们怎么玩的,但是我用这个实现了。这个东西做了一个事情让你浏览器的DOM铺满全屏。欧?~~~

实现它

DOM

<div class='player' id='vb'>

<video id='vd' playsinline webkit-playsinline="true" controls object-fit: contain;'>

<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" type="video/mp4" />

</video>

<div class='video-status' id='log'>

<img src="http://wx4.sinaimg.cn/large/006ARE9vgy1fs9w9ukwjhj30g40afaap.jpg" alt="">

</div>

</div>Script

<script src="https://cdn.bootcss.com/screenfull.js/4.1.0/screenfull.js"></script>

<script>

const log = document.getElementById('log')

const videoBox = document.getElementById('vb')

log.onclick = _=> {

const fullFlag = videoBox.className.indexOf('full-screen')

if (fullFlag === -1) {

videoBox.setAttribute('class','player full-screen')

} else {

videoBox.setAttribute('class','player')

}

screenfull.toggle()

}

</script>CSS

<style>

/* reset */

html,body,h1,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,caption,th,td,form,fieldset,legend,input,button,textarea,menu{margin:0;padding:0;}

header,footer,section,article,aside,nav,hgroup,address,figcaption,menu,details{display:block;}

table{border-collapse:collapse;border-spacing:0;}

caption,th{text-align:left;font-weight:normal;}

html,img,iframe,abbr{border:0;}

i,cite,em,var,dfn{font-style:normal;}

[hidefocus],summary{outline:0;}

li{list-style:none;}

h1,small{font-size:100%;}

sup,sub{font-size:83%;}

pre,code,kbd,samp{font-family:inherit;}

q:before,q:after{content:none;}

textarea{overflow:auto;resize:none;}

label,summary{cursor:default;}

a,button{cursor:pointer;}

h1,strong,b{font-weight:bold;}

del,ins,u,s,a,a:hover{text-decoration:none;}

body,select,keygen,legend{font:12px/1.14 arial,5b8b4f53;color:#333;outline:0;}

body{background:#fff;}

a,a:hover{color:#333;}

.player {

width: 800px;

height: auto;

margin: 0 auto;

position: relative;

background-color: black;

}

.player video{

width: 100%;

height: 100%;

}

.video-status {

position: absolute;

right: 100px;

top: 40px;

}

.video-status img {

width: 100px;

}

.full-screen {

position: fixed;

width: 100%;

height: 100%;

}

</style>去我的代码里找你需要的东西吧。

pointer-events是啥?弹幕呢?

pointer-events 是一个CSS属性做点透的时候用的,如果你有一个弹幕层在Video上边你会需要到她的。弹幕呢,没有。好多人都已经实现了好不好,这个你还是去问问[百度][5]或者[必应][6]吧。

GitHub 地址https://github.com/Gao-Fan/vi来自:https://segmentfault.com/a/1190000018775038

总结


以上是前端之家为你收集整理的视频全屏弹幕实现全部内容,希望文章能够帮你解决视频全屏弹幕实现所遇到的程序开发问题。

如果觉得前端之家网站内容还不错,欢迎将前端之家网站推荐给前端开发程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。