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 相关文章推荐
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
Jan 15 Javascript
javascript 设计模式之单体模式 面向对象学习基础
Apr 18 Javascript
数组方法解决JS字符串连接性能问题有争议
Jan 12 Javascript
js+css实现导航效果实例
Feb 10 Javascript
jquery实现简单的轮换出现效果实例
Jul 23 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
Aug 06 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 jQuery
javascript回调函数的概念理解与用法分析
May 27 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
Jul 19 Javascript
js与jquery获取input输入框中的值实例讲解
Feb 27 jQuery
jQuery实现的解析本地 XML 文档操作示例
Apr 30 jQuery
在antd中setFieldsValue和defaultVal的用法
Oct 29 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
Get或Post提交值的非法数据处理
2006/10/09 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
浅谈django的render函数的参数问题
2018/10/16 Python
python字符串反转的四种方法详解
2019/12/02 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
商场促销活动方案
2014/02/08 职场文书
论文指导教师评语
2014/04/28 职场文书
创业培训计划书
2014/05/03 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
校长四风对照检查材料
2014/09/27 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android