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与ExtJS之选择实例分析
Aug 19 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
Feb 16 Javascript
javascript正则表达式总结
Feb 29 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
Jun 01 Javascript
原生js实现class的添加和删除简单代码
Jul 12 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
Sep 28 Javascript
微信小程序 开发经验整理
Feb 15 Javascript
js实现导航吸顶效果
Feb 24 Javascript
jQuery模拟窗口抖动效果
Mar 15 Javascript
JavaScript Math对象和调试程序的方法分析
May 13 Javascript
vue百度地图 + 定位的详解
May 13 Javascript
使用layui定义一个模块并使用的例子
Sep 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
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
python 解压pkl文件的方法
2018/10/25 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
Django中ORM的基本使用教程
2020/12/22 Python
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
茱莉蔻美国官网:Jurlique美国
2020/11/24 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
护士自我鉴定范文
2013/10/06 职场文书
消防安全汇报材料
2014/02/08 职场文书
工程资料员岗位职责
2014/03/10 职场文书
运动会拉拉队口号
2014/06/09 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
2015年老干部工作总结
2015/04/23 职场文书
元旦主持词开场白
2015/05/29 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
教师师德承诺书2016
2016/03/25 职场文书
解决pytorch-gpu 安装失败的记录
2021/05/24 Python
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
图片批量处理 - 尺寸、格式、水印等
2022/03/07 杂记