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 相关文章推荐
弹出广告特效(一个IP只弹出一次)的代码
Jul 27 Javascript
javascript下高性能字符串连接StringBuffer类
Aug 16 Javascript
JavaScript生成随机字符串的方法
Mar 19 Javascript
JavaScript脚本判断蜘蛛来源的方法
Sep 22 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
Sep 26 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
Dec 18 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
Apr 23 Javascript
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
Iview Table组件中各种组件扩展的使用
Oct 20 Javascript
js中的reduce()函数讲解
Jan 18 Javascript
Vue实现兄弟组件间的联动效果
Jan 21 Javascript
vue实现导航菜单和编辑文本的示例代码
Jul 04 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
第五节 克隆 [5]
2006/10/09 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
js对象的构造和继承实现代码
2010/12/05 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
NodeJS url验证(url-valid)的使用方法
2013/11/18 NodeJs
纯js写的分页表格数据为json串
2014/02/18 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
2014/03/06 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
jquery利用拖拽方式在图片上添加热链接
2015/11/24 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
python使用fork实现守护进程的方法
2017/11/16 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
营业员个人总结的自我评价
2013/10/25 职场文书
文体活动实施方案
2014/03/27 职场文书
团代会主持词
2014/04/02 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
python自动化八大定位元素讲解
2021/07/09 Python
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS