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 相关文章推荐
vs2003 js文件编码问题的解决方法
Mar 20 Javascript
Jquery Change与bind事件代码
Sep 29 Javascript
jQuery选择器源码解读(一):Sizzle方法
Mar 31 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
May 13 Javascript
js+html5实现canvas绘制网页时钟的方法
May 21 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
Nov 20 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
Dec 18 Javascript
Bootstrap table 定制提示语的加载过程
Feb 20 Javascript
详解Vue2.0里过滤器容易踩到的坑
Jun 01 Javascript
vue bootstrap小例子一枚
Jun 09 Javascript
layui 实现表格某一列显示图标
Sep 19 Javascript
ES11新增的这9个新特性,你都掌握了吗
Oct 15 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 curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
element中的$confirm的使用
2020/04/26 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
python连接sql server乱码的解决方法
2013/01/28 Python
pandas通过loc生成新的列方法
2018/11/28 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
Python 复平面绘图实例
2019/11/21 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
《雨霖铃》听课反思
2014/02/13 职场文书
毕业晚会主持词
2014/03/24 职场文书
还款承诺书范文
2014/05/20 职场文书
火灾现场处置方案
2014/05/28 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
合作意向书
2014/07/30 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
民主评议党员个人总结
2015/02/13 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫