基于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 相关文章推荐
一段批量给页面上的控件赋值js
Jun 19 Javascript
js修改原型的属性使用介绍
Jan 26 Javascript
Knockoutjs 学习系列(一)ko初体验
Jun 07 Javascript
基于JS模仿windows文件按名称排序效果
Jun 29 Javascript
JavaScript 继承详解(六)
Oct 11 Javascript
微信小程序 loading(加载中提示框)实例
Oct 28 Javascript
jQuery中值得注意的trigger方法浅析
Dec 12 Javascript
BackBone及其实例探究_动力节点Java学院整理
Jul 14 Javascript
JavaScript利用fetch实现异步请求的方法实例
Jul 26 Javascript
如何在Vue.js中实现标签页组件详解
Jan 02 Javascript
深入学习js函数的隐式参数 arguments 和 this
Jun 24 Javascript
taro 实现购物车逻辑的实例代码
Jun 05 Javascript
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 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
PHP类的使用 实例代码讲解
2009/12/28 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
JavaScript性能优化之小知识总结
2015/11/20 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
基于jQuery的表单填充实例
2017/08/22 jQuery
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
[00:35]TI7不朽珍藏III——寒冰飞龙不朽展示
2017/07/15 DOTA
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
python如何实现int函数的方法示例
2018/02/19 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
基于python实现从尾到头打印链表
2019/11/02 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
美国探亲签证邀请信
2014/02/05 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
党支部考察意见范文
2015/06/02 职场文书
《月球之谜》教学反思
2016/02/20 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers
redis复制有可能碰到的问题汇总
2022/04/03 Redis
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server