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 相关文章推荐
JS onmousemove鼠标移动坐标接龙DIV效果实例
Dec 16 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
Mar 04 Javascript
jQuery实现简单的回到顶部totop功能示例
Oct 16 jQuery
微信小程序progress组件使用详解
Jan 31 Javascript
详解Vue文档中几个易忽视部分的剖析
Mar 24 Javascript
JS中数组与对象的遍历方法实例小结
Aug 14 Javascript
实例介绍JavaScript中多种组合继承
Jan 20 Javascript
详解ES6中的Map与Set集合
Mar 22 Javascript
Echarts地图添加引导线效果(labelLine)
Sep 30 Javascript
jquery 时间戳转日期过程详解
Oct 12 jQuery
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
Mar 07 Javascript
原生JavaScript实现随机点名表
Jan 14 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
各种战术和打法的原创者
2020/03/04 星际争霸
php下清空字符串中的HTML标签的代码
2010/09/06 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
Js实现动态添加删除Table行示例
2014/04/14 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
详解Js中的模块化是如何实现的
2017/10/18 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
Python实现扫描局域网活动ip(扫描在线电脑)
2015/04/28 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
露营世界:Camping World
2017/02/02 全球购物
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
模具专业推荐信
2013/10/30 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
大二学生自我检讨书
2014/10/23 职场文书
2016党校学习心得体会
2016/01/07 职场文书