jquery实现转盘抽奖功能


Posted in Javascript onJanuary 06, 2017

jquery实现转盘抽奖功能

实现这个其实蛮简单的,转动的效果用的jqueryRotate插件,所以只要判断每个奖荐对应的角度,然后设置指针的转动角度就可以了。比如关键的是jqueryRotate这个插件的用法。

jqueryRotate的资料:

支持Internet Explorer 6.0+ 、Firefox 2.0 、Safari 3 、Opera 9 、Google Chrome,高级浏览器下使用Transform,低版本ie使用VML实现

google code地址:http://code.google.com/p/jqueryrotate/

调用和方法:

$(el).rotate({  

angle:0, //起始角度


 animateTo:180, //结束的角度


 duration:500, //转动时间


 callback:function(){}, //回调函数


 easing: $.easing.easeInOutExpo //定义运动的效果,需要引用jquery.easing.min.js的文件
  })
$(el).rotate(45); //直接这样子调用的话就是变换角度
$(el).getRotateAngle(); //返回对象当前的角度
$(el).stopRotare(); //停止旋转动画

另外可以更方便的通过调用$(el).rotateRight()和$(el).rotateLeft()来分别向右旋转90度和向左旋转90度。

很简单吧,各种example可以看这里:http://code.google.com/p/jqueryrotate/wiki/Examples

下面是用jqueryRotate实现的抽奖转盘页面:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>转盘</title>
<style>
 *{padding:0;margin:0}
 body{
 text-align:center
 }
 .ly-plate{
 position:relative;
 width:509px;
 height:509px;
 margin: 50px auto;
 }
 .rotate-bg{
 width:509px;
 height:509px;
 background:url(ly-plate.png);
 position:absolute;
 top:0;
 left:0
 }
 .ly-plate div.lottery-star{
 width:214px;
 height:214px;
 position:absolute;
 top:150px;
 left:147px;
 /*text-indent:-999em;
 overflow:hidden;
 background:url(rotate-static.png);
 -webkit-transform:rotate(0deg);*/
 outline:none
 }
 .ly-plate div.lottery-star #lotteryBtn{
 cursor: pointer;
 position: absolute;
 top:0;
 left:0;
 *left:-107px
 }
</style>
</head>
<body>
 <div class="ly-plate">
 <div class="rotate-bg"></div>
 <div class="lottery-star"><img src="rotate-static.png" id="lotteryBtn"></div>
 </div>
</body>
<script src="jquery-1.7.2.min.js"></script>
<script src="jQueryRotate.2.2.js"></script>
<script>
$(function(){
 var timeOut = function(){ //超时函数
 $("#lotteryBtn").rotate({
  angle:0, 
  duration: 10000, 
  animateTo: 2160, //这里是设置请求超时后返回的角度,所以应该还是回到最原始的位置,2160是因为我要让它转6圈,就是360*6得来的
  callback:function(){
  alert('网络超时')
  }
 }); 
 }; 
 var rotateFunc = function(awards,angle,text){ //awards:奖项,angle:奖项对应的角度,text:提示文字
 $('#lotteryBtn').stopRotate();
 $("#lotteryBtn").rotate({
  angle:0, 
  duration: 5000, 
  animateTo: angle+1440, //angle是图片上各奖项对应的角度,1440是我要让指针旋转4圈。所以最后的结束的角度就是这样子^^
  callback:function(){
  alert(text)
  }
 }); 
 };
 $("#lotteryBtn").rotate({ 
 bind: 
  { 
  click: function(){
  var time = [0,1];
   time = time[Math.floor(Math.random()*time.length)];
  if(time==0){
   timeOut(); //网络超时
  }
  if(time==1){
   var data = [1,2,3,0]; //返回的数组
   data = data[Math.floor(Math.random()*data.length)];
   if(data==1){
   rotateFunc(1,157,'恭喜您抽中的一等奖')
   }
   if(data==2){
   rotateFunc(2,247,'恭喜您抽中的二等奖')
   }
   if(data==3){
   rotateFunc(3,22,'恭喜您抽中的三等奖')
   }
   if(data==0){
   var angle = [67,112,202,292,337];
    angle = angle[Math.floor(Math.random()*angle.length)]
   rotateFunc(0,angle,'很遗憾,这次您未抽中奖')
   }
  }
  }
  } 
 });
})
</script>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JS中==与===操作符的比较
Mar 21 Javascript
javascript 必知必会之closure
Sep 21 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
Jan 27 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
Jul 04 Javascript
js获得参数的getParameter使用示例
Feb 26 Javascript
浅谈JavaScript对象与继承
Jul 10 Javascript
微信开发 微信授权详解
Oct 21 Javascript
jQuery 常见小例汇总
Dec 14 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
Mar 23 jQuery
vue中设置height:100%无效的问题及解决方法
Jul 27 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
Aug 20 Javascript
解决Vue @submit 提交后不刷新页面问题
Jul 18 Javascript
BootStrap3中模态对话框的使用
Jan 06 #Javascript
如何制作幻灯片(代码分享)
Jan 06 #Javascript
微信小程序 支付简单实例及注意事项
Jan 06 #Javascript
微信小程序-拍照或选择图片并上传文件
Jan 06 #Javascript
ajax异步请求详解
Jan 06 #Javascript
微信小程序 限制1M的瘦身技巧与方法详解
Jan 06 #Javascript
微信小程序 二维码canvas绘制实例详解
Jan 06 #Javascript
You might like
php数据库密码的找回的步骤
2011/01/12 PHP
php标签云的实现代码
2012/10/10 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
ThinkPHP控制器详解
2015/07/27 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
Python完全新手教程
2007/02/08 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
分享vim python缩进等一些配置
2018/07/02 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
大学毕业感言200字
2014/03/09 职场文书
道路建设实施方案
2014/03/18 职场文书
分家协议书
2014/04/21 职场文书
新农村建设标语
2014/06/24 职场文书
初级党校心得体会
2014/09/11 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript