前言
现在很多的直播平台或者视频平台都会用到弹幕加强和观众的互动效果,那么如何用JS实现这样的效果呢,用一个初学者的方法记录下这个方法,欢迎大牛指导。
1、首先需要操作文档必须拿到Dom中的元素,当然有很多方法,这里还是用document.querySelector.
2、这边也是为了键盘和鼠标都可发送封装了一个函数function sendMsg(){
首先需要创建一个容器来接受你编辑的内容,这里用span标签,当然其他标签也可
var oSpan=document.cerateElement(“span”)
将oSpan插入到需要展示的oVideoBox
oVideoBox.appendChild(oSpan)
给oSpan加入class用于编辑插入的样式,当然也可以用js,这里用的CSS样式oSpan.classList.add(“danmu”)
用innerHTML接用户图像及弹幕内容这里用ES6的一个``
oSpan.innerHTML =` < img src ="./source/lei.jpg" /> ${oContent.value}
计算弹幕出现的初始位置,left位移初始位置即oVideoBox的宽度oVideoBox.offsetWidth.也是oSpan的初始定位oSpan.offsetLeft
top位移的初始即oVideoBox内随机的高度,避免超出
var maxTop=oVideoBox…clientHeight-oSpan.offsetHeight; var top=Math.round(Math.random()*maxTop) oSpan.style.top = top+ ‘px'
当然JS的动画也离不开计时器。这边也是用setInterval()
var timer=setInterval(()=>{ var left=oSpan.offsetLeft left-=10 oSpan.style.left= left+ ‘px'
这边判断一下如果超出屏幕就把弹幕和计时器移出
if(left<-oSpan.offsetWidtb){ clearInterval(timer); oSpan.remove();}},100)
以上就完成了简易版的弹幕函数就封装完成了,后面就可以引用了,
事件从点击开始,弹幕也是创建点击事件oSend.onclick,
oSend.οnclick=function(){引用函数sendMsg()}
后面可以加上一个键盘的enter可以发送,是一个事件委托window.οnkeydοwn=function(e){
var ev = e || event; var keyCode = ev.keyCode || ev.which;
判断如果按的是键盘enter的keycode码是13和alt组合
if (keyCode === 13 && ev.altKey) { sendMsg();}}
以下是bod代码,可以练练
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>作业_弹幕</title> <style> * { padding: 0; margin: 0; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } .wrapBox { width: 800px; height: 550px; border: 1px solid #000; margin: 50px auto 0; } .videoBox { height: 500px; position: relative; overflow: hidden; } .videoBox img { width: 100%; height: 100%; } video { width: 100%; /* height: 500px; */ } .danmuSend { display: flex; height: 50px; } #content { flex: 1; } #send { width: 100px; } .danmu { color: #f00; font-size: 20px; position: absolute; left: 800px; top: 0; white-space: nowrap; } .danmu img { width: 60px; height: 60px; border-radius: 50%; vertical-align: middle; display: inline-block; } </style> </head> <body> <div class="wrapBox"> <div class="videoBox"> <img src="/UploadFiles/2021-04-02/bg.jpg">以下是JS的代码:
<script> var oSend = document.querySelector('#send'); var oContent = document.querySelector('#content'); var oVideoBox = document.querySelector('.videoBox'); function sendMsg() { var content = oContent.value; var oSpan = document.createElement('span'); oSpan.className = 'danmu'; oSpan.innerHTML = `<img src="/UploadFiles/2021-04-02/bg.jpg">总结
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]