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 相关文章推荐
(jQuery,mootools,dojo)使用适合自己的编程别名命名
Sep 14 Javascript
JS文本框默认值处理详解
Jul 10 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
Jul 11 Javascript
javascript设计模式之解释器模式详解
Jun 05 Javascript
详解javascript中的事件处理
Nov 06 Javascript
各式各样的导航条效果css3结合jquery代码实现
Sep 17 Javascript
JavaScript 最佳实践:帮你提升代码质量
Dec 03 Javascript
JS HTML图片显示Canvas 压缩功能
Jul 21 Javascript
详解ajax的data参数错误导致页面崩溃
Apr 30 Javascript
微信小程序实现Swiper轮播图效果
Nov 22 Javascript
JavaScript前端实现压缩图片功能
Mar 06 Javascript
jQuery 淡入/淡出效果函数用法分析
May 19 jQuery
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面向对象教程之自定义类
2014/06/10 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
javascript读取RSS数据
2007/01/20 Javascript
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
理解Javascript_08_函数对象
2010/10/15 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
如何使用 vue-cli 创建模板项目
2020/11/19 Vue.js
[01:00]选手抵达华西村 整装待发备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
python控制台英汉汉英电子词典
2020/04/23 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
python中range()与xrange()用法分析
2016/09/21 Python
python实现网站微信登录的示例代码
2019/09/18 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
python实现超市商品销售管理系统
2019/11/22 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
python开发入门——列表生成式
2020/09/03 Python
几道数据库的面试题或笔试题
2014/05/31 面试题
高三地理教学反思
2014/01/11 职场文书
安全检查管理制度
2014/02/02 职场文书
中学生自我鉴定
2014/02/04 职场文书
工程技术员岗位职责
2014/03/02 职场文书
廉洁使者实施方案
2014/03/29 职场文书
设备技术员岗位职责
2015/04/11 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书