基于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简单实现删除记录时的提示效果
Dec 05 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
Mar 18 Javascript
jquery统计用户选中的复选框的个数
Jun 06 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
Aug 15 Javascript
jquery.ajax之beforeSend方法使用介绍
Dec 08 Javascript
JavaScript中的对象与JSON
Jul 03 Javascript
jquery ui dialog替代confirm实例分析
Jan 25 Javascript
JS模拟的Map类实现方法
Jun 17 Javascript
关于Promise 异步编程的实例讲解
Sep 01 Javascript
解决layui中的form表单与button的点击事件冲突问题
Aug 15 Javascript
Vue瀑布流插件的使用示例
Sep 19 Javascript
puppeteer实现html截图的示例代码
Jan 10 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
php5.3 goto函数介绍和示例
2014/03/21 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
php实现socket推送技术的示例
2017/12/20 PHP
Javascript 二维数组
2009/11/26 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
python基础教程之自定义函数介绍
2014/08/29 Python
详解Tensorflow数据读取有三种方式(next_batch)
2018/02/01 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
Numpy截取指定范围内的数据方法
2018/11/14 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
django云端留言板实例详解
2019/07/22 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
Python图像处理库PIL的ImageGrab模块介绍详解
2020/02/26 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
曼城官方网上商店:Manchester City
2019/09/10 全球购物
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
为什么需要版本控制?
2013/08/08 面试题
绿色城市实施方案
2014/03/19 职场文书
歌颂祖国演讲稿
2014/05/04 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
个人工作能力自我评价
2015/03/05 职场文书
给朋友的道歉短信
2015/05/12 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
深入浅析Django MTV模式
2021/09/04 Python