基于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 相关文章推荐
jquery1.4.2 for Visual studio 2010 模板文件
Jul 14 Javascript
JavaScript的RequireJS库入门指南
Jul 01 Javascript
JavaScript中调用函数的4种方式代码实例
Jul 08 Javascript
轻松实现javascript数据双向绑定
Nov 11 Javascript
学习JavaScript设计模式之观察者模式
Apr 22 Javascript
强大Vue.js组件浅析
Sep 12 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
Oct 27 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
Nov 29 Javascript
vue如何将v-for中的表格导出来
May 07 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
Jun 24 Javascript
梳理一下vue中的生命周期
Dec 30 Vue.js
如何利用js在两个html窗口间通信
Apr 27 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数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
Laravel 队列使用的实现
2019/01/08 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
优化Jquery,提升网页加载速度
2013/11/14 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
2015/08/24 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
js实现分割上传大文件
2016/03/09 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
Vuex的actions属性的具体使用
2019/04/14 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
Python for循环生成列表的实例
2018/06/15 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Python中一般处理中文的几种方法
2019/03/06 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
python实现画循环圆
2019/11/23 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
python绘制雷达图实例讲解
2021/01/03 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
大学生自我鉴定
2013/12/16 职场文书
教学实验楼管理制度
2014/02/01 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
语文教师个人工作总结
2015/02/06 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
大队委员竞选稿
2015/11/20 职场文书
Django基础CBV装饰器和中间件
2022/03/22 Python