基于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 相关文章推荐
基于jQuery UI CSS Framework开发Widget的经验
Aug 21 Javascript
回车直接实现点击某按钮的效果即触发单击事件
Feb 27 Javascript
js获取checkbox复选框选中的选项实例
Aug 24 Javascript
基于jquery实现表格无刷新分页
Jan 07 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
Jan 22 Javascript
有关JavaScript中call()和apply() 的一些理解
May 20 Javascript
AngularJS入门教程之MVC架构实例分析
Nov 01 Javascript
浅谈react.js 之 批量添加与删除功能
Apr 17 Javascript
webpack搭建vue 项目的步骤
Dec 27 Javascript
详解node.js的http模块实例演示
Jul 12 Javascript
vue实现element表格里表头信息提示功能(推荐)
Nov 20 Javascript
jQuery实现全选按钮
Jan 01 jQuery
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
PHP新手上路(十一)
2006/10/09 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
基于vue实现分页效果
2017/11/06 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
理解Python中的类与实例
2015/04/27 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
美国最大的团购网站:Groupon
2016/07/23 全球购物
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
给排水专业应届生求职信
2013/10/12 职场文书
初中三年学生的学习自我评价
2013/11/13 职场文书
生产总经理岗位职责
2013/12/19 职场文书
住房公积金接收函
2014/01/09 职场文书
运动会通讯稿500字
2014/02/20 职场文书
企业新年寄语
2014/04/04 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
培养联系人考察意见
2015/06/01 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
Java实现学生管理系统(IO版)
2022/02/24 Java/Android