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 相关文章推荐
用JavaScript调用WebService的示例
Apr 07 Javascript
js可突破windows弹退效果代码
Aug 09 Javascript
Javascript 布尔型分析
Dec 22 Javascript
javascript 命名规则 变量命名规则
Feb 25 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 Javascript
jquery教程ajax请求json数据示例
Jan 13 Javascript
在IE8上JS实现combobox支持拼音检索功能
May 23 Javascript
深入理解jQuery之事件移除
Jun 02 Javascript
详解AngularJs中$resource和restfu服务端数据交互
Sep 21 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
Dec 25 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
Aug 10 Javascript
JavaScript常用工具函数汇总(浏览器环境)
Sep 17 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判断网页是否gzip压缩
2013/06/25 PHP
laravel学习教程之存取器
2016/07/30 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
js 一个关于图片onload加载的事
2013/11/10 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
Bootstrap项目实战之首页内容介绍(全)
2016/04/25 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python中__init__和__new__的区别详解
2014/07/09 Python
Python简单实现enum功能的方法
2016/04/25 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
python调用摄像头拍摄数据集
2019/06/01 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
追悼会主持词
2014/03/20 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js