jquery转盘抽奖功能实现


Posted in Javascript onNovember 13, 2015

 一、用到的素材

jquery转盘抽奖功能实现jquery转盘抽奖功能实现jquery转盘抽奖功能实现jquery转盘抽奖功能实现jquery转盘抽奖功能实现jquery转盘抽奖功能实现jquery转盘抽奖功能实现

二、代码如下,重点是js部分

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery九宫格大转盘抽奖</title>
<style>
#lottery{width:570px;height:510px;margin:0px auto;border:4px solid #ba1809;}
#lottery table{background-color:yellow;}
#lottery table td{position:relative;width:190px;height:170px;text-align:center;color:#333;font-index:-999}
#lottery table td img{display:block;width:190px;height:170px;}
#lottery table td a{width:190px;height:170px;display:block;text-decoration:none;background:url(images/lottery1.jpg) no-repeat top center;}
#lottery table td a:hover{background-image:url(images/lottery2.jpg);}
#lottery table td.active .mask{display:block;}
.mask{
 width:100%;
 height:100%;
 position:absolute;
 left:0;
 top:0;
 background:url(images/mask.png) no-repeat;
 display:none;
}
</style>
</head>
<body class="keBody">
<!--效果html开始-->
<div id="lottery">
 <table border="0" cellpadding="0" cellspacing="0">
  <tr>
   <td class="lottery-unit lottery-unit-0"><img src="images/gift0.jpg"><div class="mask"></div></td>
   <td class="lottery-unit lottery-unit-1"><img src="images/gift1.jpg"><div class="mask"></div></td>
   <td class="lottery-unit lottery-unit-2"><img src="images/gift2.jpg"><div class="mask"></div></td>
  </tr>
  <tr>
   <td class="lottery-unit lottery-unit-7"><img src="images/gift7.jpg"><div class="mask"></div></td>
   <td><a href="#"></a></td>
   <td class="lottery-unit lottery-unit-3"><img src="images/gift3.jpg"><div class="mask"></div></td>
  </tr>
  <tr>
   <td class="lottery-unit lottery-unit-6"><img src="images/gift6.jpg"><div class="mask"></div></td>
   <td class="lottery-unit lottery-unit-5"><img src="images/gift5.jpg"><div class="mask"></div></td>
   <td class="lottery-unit lottery-unit-4"><img src="images/gift4.jpg"><div class="mask"></div></td>
  </tr>
 </table>
</div>

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
var lottery={
 index:-1, //当前转动到哪个位置,起点位置
 count:0, //总共有多少个位置
 timer:0, //setTimeout的ID,用clearTimeout清除
 speed:20, //初始转动速度
 times:0, //转动次数
 cycle:50, //转动基本次数:即至少需要转动多少次再进入抽奖环节
 prize:-1, //中奖位置
 init:function(id){
  if ($("#"+id).find(".lottery-unit").length>0) {
   $lottery = $("#"+id);
   $units = $lottery.find(".lottery-unit");
   this.obj = $lottery;
   this.count = $units.length;
   $lottery.find(".lottery-unit-"+this.index).addClass("active");
  };
 },
 roll:function(){
  var index = this.index;
  var count = this.count;
  var lottery = this.obj;
  $(lottery).find(".lottery-unit-"+index).removeClass("active");
  index += 1;
  if (index>count-1) {
   index = 0;
  };
  $(lottery).find(".lottery-unit-"+index).addClass("active");
  this.index=index;
  return false;
 },
 stop:function(index){
  this.prize=index;
  return false;
 }
};

function roll(){
 lottery.times += 1;
 lottery.roll();//转动过程调用的是lottery的roll方法,这里是第一次调用初始化
 if (lottery.times > lottery.cycle+10 && lottery.prize==lottery.index) {
  clearTimeout(lottery.timer);
  lottery.prize=-1;
  lottery.times=0;
  click=false;
 }else{
  if (lottery.times<lottery.cycle) {
   lottery.speed -= 10;
  }else if(lottery.times==lottery.cycle) {
   var index = Math.random()*(lottery.count)|0;
   lottery.prize = index;  
  }else{
   if (lottery.times > lottery.cycle+10 && ((lottery.prize==0 && lottery.index==7) || lottery.prize==lottery.index+1)) {
    lottery.speed += 110;
   }else{
    lottery.speed += 20;
   }
  }
  if (lottery.speed<40) {
   lottery.speed=40;
  };
  //console.log(lottery.times+'^^^^^^'+lottery.speed+'^^^^^^^'+lottery.prize);
  lottery.timer = setTimeout(roll,lottery.speed);//循环调用
 }
 return false;
}

var click=false;

window.onload=function(){
 lottery.init('lottery');
 $("#lottery a").click(function(){
  if (click) {//click控制一次抽奖过程中不能重复点击抽奖按钮,后面的点击不响应
   return false;
  }else{
   lottery.speed=100;
   roll(); //转圈过程不响应click事件,会将click置为false
   click=true; //一次抽奖完成后,设置click为true,可继续抽奖
   return false;
  }
 });
};
</script>
<!--效果html结束-->

</body>
</html>

效果如下:

jquery转盘抽奖功能实现

三、注意事项
.mask开始如下,用的是rgba,但是IE8不兼容,改为使用png图片background:url(images/mask.png) no-repeat;

.mask {
 width: 100%;
 height: 100%;
 position: absolute;
 left: 0;
 top: 0;
 background-color: rgba(252,211,4,0.5);
 display: none
}

希望大家可以从小编整理的这篇文章中有所收获,对大家实现抽奖功能有所帮助。

Javascript 相关文章推荐
event.keyCode键码值表 附只能输入特定的字符串代码
May 15 Javascript
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
Apr 13 Javascript
SyntaxHighlighter 3.0.83使用笔记
Jan 26 Javascript
JavaScript实现的背景自动变色代码
Oct 17 Javascript
全面解析Bootstrap图片轮播效果
Dec 03 Javascript
基于BootStrap的图片轮播效果展示实例代码
May 23 Javascript
JS实现根据文件字节数返回文件大小的方法
Aug 02 Javascript
利用vue实现模态框组件
Dec 19 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
Feb 08 Javascript
jQuery Validate表单验证插件实现代码
Jun 08 jQuery
Vue仿微信app页面跳转动画效果
Aug 21 Javascript
详解一些适用于Node.js的命名约定
Dec 08 Javascript
javascript生成随机数方法汇总
Nov 12 #Javascript
js正则表达式验证邮件地址
Nov 12 #Javascript
每天一篇javascript学习小结(Boolean对象)
Nov 12 #Javascript
为何JS操作的href都是javascript:void(0);呢
Nov 12 #Javascript
基于jquery实现左右按钮点击的图片切换效果
Jan 27 #Javascript
js图片轮播效果实现代码
Apr 18 #Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 #Javascript
You might like
改造一台复古桌面收音机
2021/03/02 无线电
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
一些常用的Javascript函数
2006/12/22 Javascript
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
javascript实现确定和取消提示框效果
2015/07/10 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
easyui form validate总是返回false的原因及解决方法
2016/11/07 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
17个Python小技巧分享
2015/01/23 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
python实现简易数码时钟
2021/02/19 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
德国综合购物网站:OTTO
2018/11/13 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
书香校园活动方案
2014/02/28 职场文书
微电影大赛策划方案
2014/06/05 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
工作失职检讨书范文
2015/05/05 职场文书
优质护理心得体会
2016/01/22 职场文书