视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
jquery转盘抽奖功能实现_jquery
2020-11-27 21:45:30 责编:小采
文档
 一、用到的素材

二、代码如下,重点是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开始-->
<p id="lottery">
 <table border="0" cellpadding="0" cellspacing="0">
 <tr>
 <td class="lottery-unit lottery-unit-0"><img src="images/gift0.jpg"><p class="mask"></p></td>
 <td class="lottery-unit lottery-unit-1"><img src="images/gift1.jpg"><p class="mask"></p></td>
 <td class="lottery-unit lottery-unit-2"><img src="images/gift2.jpg"><p class="mask"></p></td>
 </tr>
 <tr>
 <td class="lottery-unit lottery-unit-7"><img src="images/gift7.jpg"><p class="mask"></p></td>
 <td><a href="#"></a></td>
 <td class="lottery-unit lottery-unit-3"><img src="images/gift3.jpg"><p class="mask"></p></td>
 </tr>
 <tr>
 <td class="lottery-unit lottery-unit-6"><img src="images/gift6.jpg"><p class="mask"></p></td>
 <td class="lottery-unit lottery-unit-5"><img src="images/gift5.jpg"><p class="mask"></p></td>
 <td class="lottery-unit lottery-unit-4"><img src="images/gift4.jpg"><p class="mask"></p></td>
 </tr>
 </table>
</p>

<script src="http://code.jquery.com/jquery-latest.js?7.1.34"></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>

效果如下:


三、注意事项

.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
}

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

下载本文
显示全文
专题