JS实现的视频弹幕效果示例


Posted in Javascript onAugust 17, 2018

本文实例讲述了JS实现的视频弹幕效果。分享给大家供大家参考,具体如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta charset="utf-8">
  <title>斗鱼弹幕</title>
  <style>
    html,body{font-size:10px;overflow:hidden;margin:0;padding:0;}
    #box{width:100%;height:100%;}
    #dm{width:100%;height:90vh;background:#E8F1F5;}
    #dm span{width:auto;height:3rem;font-size:2rem;line-height:2rem;position:absolute;white-space:nowrap;}
    #idDom{width:100%;height:10vh;background:#666;position:absolute;bottom:0;display:flex;align-items:center;justify-content:center;}
    #content{width:50rem;height:10vh;display:flex;align-items:center;justify-content:center;}
    .title{font-size:2.2px rein;color:#fff;line-height:#ccc;}
    .text{width:30rem;height:2.5rem;border:none;border-radius:.5rem;font-size:1.4rem;margin:0 .5rem;padding:0 1rem;}
    .btn{width:6rem;height:3rem;border:none;background:red;color:#fff;}
  </style>
</head>
<body>
<div class="box" id="box">
  <div id="dm"></div>
  <div class="idDom" id="idDom">
    <div id="content">
      <p class="title">吐槽:</p>
      <input type="text" class="text" id="text" placeholder="请输入你想说的话" />
      <button type="button" class="btn" id="btn">发射!</button>
    </div>
  </div>
</div>
<script langugae="javascript">
var timer;
var btn = document.getElementById('btn');
btn.onclick = function() { addBarrage();}
document.onkeydown = function(evt) {var event = evt || window.event;if (event.keyCode == 13) {addBarrage();}}
var colors = ['#2C3E50', '#FF0000', '#1E87F0', '#7AC84B', '#FF7F00', '#9B39F4', '#FF69B4'];//弹幕颜色库
function addBarrage() {
  clearInterval(timer);
  var text = document.getElementById('text').value;
  document.getElementById('text').value = "";
    var index = parseInt(Math.random() * colors.length); //随机弹幕颜色
  var screenW = window.innerWidth;
  var screenH = dm.offsetHeight;
  var max = Math.floor(screenH / 40);
  var height = 10 + 40 * (parseInt(Math.random() * (max + 1)) - 1);
  var span = document.createElement('span');
  span.style.left = screenW + 'px';
  span.style.top = height + 'px';
  span.style.color = colors[index];
  span.innerHTML = text;
  var dmDom = document.getElementById('dm');
  dmDom.appendChild(span);
  timer = setInterval(move, 10);
}
function move() {
  var arr=[];
  var oSpan=document.getElementsByTagName('span');
  for(var i=0;i<oSpan.length;i++){
    arr.push(oSpan[i].offsetLeft);
    arr[i] -= 2;
    oSpan[i].style.left = arr[i]+'px';
    if(arr[i]<-oSpan[i].offsetWidth){
      var dmDom=document.getElementById('dm');
      dmDom.removeChild(dmDom.childNodes[0]);
    }
  }
}
</script>
</body>
</html>

运行效果如下图所示:

JS实现的视频弹幕效果示例

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun,测试代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
在javascript中实现函数数组的方法
Dec 25 Javascript
node.js中的fs.ftruncate方法使用说明
Dec 15 Javascript
javascript动态创建链接的方法
May 13 Javascript
浅谈JS函数定义方式的区别
Oct 30 Javascript
javascript读取文本节点方法小结
Dec 15 Javascript
js前端实现图片懒加载(lazyload)的两种方式
Apr 24 Javascript
利用ES6实现单例模式及其应用详解
Dec 09 Javascript
js for终止循环 跳出多层循环
Oct 04 Javascript
微信小程序实现单选功能
Oct 30 Javascript
9102年webpack4搭建vue项目的方法步骤
Feb 20 Javascript
vue如何使用async、await实现同步请求
Dec 09 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
Nov 30 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 #Javascript
jQuery实现轮播图及其原理详解
Apr 12 #jQuery
chosen实现省市区三级联动
Aug 16 #Javascript
webuploader实现上传图片到服务器功能
Aug 16 #Javascript
Vue+webpack+Element 兼容问题总结(小结)
Aug 16 #Javascript
Vue 与 Vuex 的第一次接触遇到的坑
Aug 16 #Javascript
深入理解Vue 组件之间传值
Aug 16 #Javascript
You might like
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
Python程序设计入门(5)类的使用简介
2014/06/16 Python
python实现简单ftp客户端的方法
2015/06/28 Python
Python 装饰器深入理解
2017/03/16 Python
基于Python闭包及其作用域详解
2017/08/28 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
基于python生成器封装的协程类
2019/03/20 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
垃圾回收的优点和原理
2014/05/16 面试题
元宵晚会主持词
2014/03/25 职场文书
白血病捐款倡议书
2014/05/14 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
运动会通讯稿300字
2015/07/20 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
python析构函数用法及注意事项
2021/06/22 Python