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 确定css方框模型(盒模型Box Model)
Jan 22 Javascript
Jquery 一次处理多个ajax请求的代码
Sep 02 Javascript
JavaScript初学者应注意的七个细节小结
Jan 30 Javascript
javascript html5 canvas实现可拖动省份的中国地图
Mar 11 Javascript
JS跨域解决方案之使用CORS实现跨域
Apr 14 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
Oct 15 Javascript
JavaScript之cookie技术详解
Nov 18 Javascript
vue 组件高级用法实例详解
Apr 11 Javascript
jQuery动态移除与增加onclick属性的方法详解
Jun 07 jQuery
jquery获取input输入框中的值
Nov 13 jQuery
浅析JavaScript预编译和暗示全局变量
Sep 03 Javascript
vue 如何从单页应用改造成多页应用
Oct 23 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
5.PHP的其他功能
2006/10/09 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
javascript 中的 delete及delete运算符
2015/11/15 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
react-native之ART绘图方法详解
2017/08/08 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
haskell实现多线程服务器实例代码
2013/11/26 Python
Python操作SQLite简明教程
2014/07/10 Python
举例介绍Python中的25个隐藏特性
2015/03/30 Python
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
python实现批量注册网站用户的示例
2019/02/22 Python
没编程基础可以学python吗
2020/06/17 Python
详解Python中import机制
2020/09/11 Python
介绍下java.util.Arrays类
2012/10/16 面试题
公司请假条范文
2014/04/11 职场文书
3分钟演讲稿
2014/04/30 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
Python中使用subprocess库创建附加进程
2021/05/11 Python
Python机器学习之PCA降维算法详解
2021/05/19 Python