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 全兼容可高亮二级缓冲折叠菜单
Jun 04 Javascript
浅谈javascript中的作用域
Apr 07 Javascript
JavaScript中的细节分析
Jun 30 Javascript
js读写json文件实例代码
Oct 21 Javascript
详解JS中的快速排序与冒泡
Jan 10 Javascript
jQuery实现一个简单的轮播图
Feb 19 Javascript
JS实现的点击表头排序功能示例
Mar 27 Javascript
深入理解vue Render函数
Jul 19 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
Sep 21 Javascript
element-ui的回调函数Events的用法详解
Oct 16 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
Nov 06 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
Aug 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
PHP脚本数据库功能详解(中)
2006/10/09 PHP
认识并使用PHP超级全局变量
2010/01/26 PHP
PHP操作数组相关函数
2011/02/03 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
vue实现评价星星功能
2020/06/30 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
python单例模式实例解析
2018/08/28 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
python 字典的打印实现
2019/09/26 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
介绍一下Ruby的多线程处理
2013/02/01 面试题
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
mysql 排序失效
2022/05/20 MySQL