基于jQuery实现弹幕APP


Posted in Javascript onFebruary 10, 2017

今天闲着无聊,写了个弹幕APP,主要实现以下几个功能:

1.点击“弹幕发射”或回车可以输出弹幕到弹幕墙上。
2.弹幕的运行轨迹是从弹幕墙的最右边到最左边,Y轴的数值在弹幕墙的高度内随机,颜色HEX随机,速度随机。
3.右侧的表格可以储存弹幕内容以及弹幕的发射时间,越靠近现在的越靠前。
4.点击“清除弹幕”可以把弹幕墙内的所有弹幕清除掉,但不会影响到表格中的数据。
5.如果弹幕长度过长(我设置的是6个字符),则超过规定长度之外的弹幕内容都会由“...”代替,并放入表格中。但弹幕墙中的内容依然是完整的。

基于jQuery实现弹幕APP

HTML代码:

<div class="frame"> 
 <div class="row"> 
 <div class="col-xs-8 col-sm-8 col-md-8 col-lg-8 danmu-box-frame"> 
 <div class="danmu-box"> 
 </div> 
 </div> 
 <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4 danmu-table-frame"> 
 <table class="table .table-condensed danmu-table"> 
 <thead> 
  <tr> 
  <th> 
  弹幕内容 
  </th> 
  <th> 
  弹幕时间 
  </th> 
  </tr> 
 </thead> 
 <tbody> 
 </tbody> 
 </table> 
 </div> 
 </div> 
 <div class="danmu-form"> 
 <form class="form-inline"> 
 <input type="text" class="form-control" placeholder="开始吐槽!"> 
 <button type="button" class="btn btn-primary shoot"> 
 发射弹幕! 
 </button> 
 <button type="button" class="btn btn-danger clear"> 
 清空弹幕 
 </button> 
 </form> 
 </div> 
</div> 
<hr> 
<footer> 
 Designed By 
 <a href="http://blog.csdn.net/alenhhy" target="_blank"> 
 Alen Hu 
 </a> 
</footer>

*使用了Bootstrap3框架。

JQuery部分:

$(document).ready(function() { 
 $(".shoot").on("click", startDanmu); 
 $("form").keypress(function(event) { 
 if (event.keyCode === 13) { 
 event.preventDefault(); 
 startDanmu(); 
 } 
 }); 
 $(".clear").on("click", clearDanmu); 
}); 
 
//get random number in certain range 
function RandomNum(Min, Max) { 
 var Range = Max - Min; 
 var Rand = Math.random(); 
 var num = Min + Math.round(Rand * Range); 
 return num; 
} 
 
//time number add 0 before if <10 
function plusZero(x) { 
 if (x < 10) { 
 x = "0" + x; 
 } else { 
 x = x; 
 } 
 return x; 
} 
 
//start danmu 
function startDanmu() { 
 
 var message = $("input"); 
 var messageVal = message.val(); 
 var danmuMessage = "<span class='danmu-message'>" + messageVal + "</span>"; 
 
 //get random color HEX 
 //u can also save the colors u want by array 
 var color = RandomNum(100000, 999999); 
 
 //get random danmu speed 
 var speed = RandomNum(10000, 20000); 
 
 //get random position Y 
 //danmu box height is 450, we set the danmu position Y max 400 in case it blocks the subtitle 
 var positionY = RandomNum(50, 400); 
 
 if (messageVal.length > 0) { 
 //insert danmu message into danmu box 
 $(".danmu-box").prepend(danmuMessage); 
 
 //have to use first() cuz we prepend the message, u can try what's gonna happen if no first() 
 //set it's style 
 $(".danmu-message").first().css({ 
 "right": "0", 
 "top": positionY, 
 "color": "#" + color 
 }); 
 
 //set it's animation 
 //from right 0 to left 0 
 //hide it after move 
 $(".danmu-message").first().animate({ 
 left: '0px', 
 }, 
 speed, 
 function() { 
 $(this).fadeOut(); 
 }); 
 //get danmu time 
 var time = new Date(); 
 var month = time.getMonth() + 1; 
 var day = time.getDay(); 
 var hour = time.getHours(); 
 var minute = time.getMinutes(); 
 var danmuTime = plusZero(month) + "-" + plusZero(day) + " " + plusZero(hour) + ":" + plusZero(minute); 
 
 //insert danmu message to table 
 if (messageVal.length > 6) { 
 messageVal = messageVal.substring(0, 6) + "..."; 
 } 
 var messageToTable = "<tr><td>" + messageVal + "</td><td>" + danmuTime + "</td></tr>"; 
 $(".danmu-table > tbody").prepend(messageToTable); 
 
 } else {} 
 
 //empty the input 
 message.val(""); 
} 
 
//clear danmu box 
function clearDanmu() { 
 $(".danmu-box").html(""); 
}

DEMO在这儿,欢迎来FORK:Danmu APP。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
HTML中事件触发列表与解说
Jul 09 Javascript
JavaScript 函数调用规则
Sep 14 Javascript
window.opener用法和用途实例介绍
Aug 19 Javascript
基于jquery异步传输json数据格式实例代码
Nov 23 Javascript
JavaScript实现给定时间相加天数的方法
Jan 25 Javascript
vue生成token保存在客户端localStorage中的方法
Oct 25 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
May 22 Javascript
浅谈Vue组件及组件的注册方法
Aug 24 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
Dec 03 Javascript
详解React 服务端渲染方案完美的解决方案
Dec 14 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
Feb 12 Javascript
vue打包时去掉所有的console.log
Apr 10 Vue.js
BOM之navigator对象和用户代理检测
Feb 10 #Javascript
基于JQuery及AJAX实现名人名言随机生成器
Feb 10 #Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
Feb 10 #Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
Feb 10 #Javascript
javascript自执行函数
Feb 10 #Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
Feb 10 #Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
Feb 10 #Javascript
You might like
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
javascript时间差插件分享
2016/07/18 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
详解在React-Native中持久化redux数据
2019/05/22 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
python 全局变量的import机制介绍
2017/09/07 Python
python获取地震信息 微信实时推送
2019/06/18 Python
python数据挖掘需要学的内容
2019/06/23 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
如何写python的配置文件
2020/06/07 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
工程师求职简历的自我评价分享
2013/10/10 职场文书
上课迟到检讨书100字
2014/01/11 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
基层党员对照检查材料
2014/08/25 职场文书
财政局长个人总结
2015/03/04 职场文书
奖励申请报告范文
2015/05/15 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js