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 相关文章推荐
(转载)JavaScript中匿名函数,函数直接量和闭包
May 08 Javascript
JavaScript之数组(Array)详解
Apr 01 Javascript
JS实现slide文字框缩放伸展效果代码
Nov 05 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
Jan 04 Javascript
JavaScript获取IP获取的是IPV6 如何校验
Jun 12 Javascript
jQuery深拷贝Json对象简单示例
Jul 06 Javascript
jQuery图片轮播功能实例代码
Jan 29 Javascript
jQuery插件imgAreaSelect基础讲解
May 26 jQuery
JavaScript你不知道的一些数组方法
Aug 18 Javascript
微信小程序使用gitee进行版本管理
Sep 20 Javascript
微信小程序实现侧边栏分类
Oct 21 Javascript
在vue中使用Base64转码的案例
Aug 07 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下读取文本文件的代码
2008/07/02 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
js 获取浏览器版本以此来调整CSS的样式
2014/06/03 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
轻松制作精彩视频:Animoto
2018/09/19 全球购物
会计岗位描述
2014/02/22 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
商品陈列协议书
2014/09/29 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
文明家庭事迹材料
2014/12/20 职场文书
采购内勤岗位职责
2015/04/13 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android