基于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 相关文章推荐
Firefox div高度自适应
Apr 28 Javascript
jquery批量设置属性readonly和disabled的方法
Jan 24 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
Sep 04 Javascript
JQuery右键菜单插件ContextMenu使用指南
Dec 19 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
Mar 26 Javascript
javascript最基本的函数汇总
Jun 25 Javascript
jQuery菜单插件用法实例
Jul 25 Javascript
JS实现的base64加密解密操作示例
Apr 18 Javascript
详解Node.js一行命令上传本地文件到服务器
Apr 22 Javascript
JavaScript实现的开关灯泡点击切换特效示例
Jul 08 Javascript
JavaScript的查询机制LHS和RHS解析
Aug 16 Javascript
JS Object构造函数之Object.freeze
Apr 28 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中大括号作用介绍
2012/03/22 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
python数据结构之图深度优先和广度优先实例详解
2015/07/08 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
对python中dict和json的区别详解
2018/12/18 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
学校运动会霸气口号
2014/06/07 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
奥巴马上海演讲稿
2014/09/10 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
个人总结怎么写
2015/02/26 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python