js九宫格抽奖

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<title>jQuery手机端中奖领取抽奖代码</title>
<link href="css/layer.css" rel="stylesheet" type="text/css" />
<script src="js/jquery-2.2.0.min.js" type="text/javascript"></script>
<style>
	*, :after, :before {
		margin: 0;
		padding: 0;
		box-sizing: border-box;
	}
	* {
		margin: 0;
		padding: 0;
	}
	main{padding-top: 3em;}
	table {
		border-spacing: 0;
		border-collapse: collapse;
		text-align: center;
	}
	
	.draw {
		width: 560px;
		height: 600px;
		margin: 0 auto;
		padding:51px;
		background-image: url(images/bg.png);
		background-repeat: no-repeat;
		background-size: 100%;
	}
	
	.draw .item {
		width: 150px;
		height: 150px;
		background-image: url(images/bg1.png);
		background-repeat: no-repeat;
		background-size: 96%;
	}
	
	.draw .item.active {
		background-image: url(images/bg2.png);
		background-repeat: no-repeat;
		background-size: 100%;
	}
	
	.draw .img {
		display: table-cell;
		width: 150px;
		height: 61px;
		vertical-align: middle;
		text-align: center;
	}
	
	.draw .img img {
		vertical-align: top;
	}
	
	.draw .gap {
		width: 5px;
	}
	
	.draw .gap-2 {
		height: 5px;
	}
	
	.draw .name {
		display: block;
		margin-top: 10px;
		font-size: 14px;
	}
	
	.draw .draw-btn {
		display: block;
		height: 150px;
		line-height: 150px;
		border-radius: 20px;
		font-size: 25px;
		font-weight: 700;
		text-decoration: none;
		background-image: url(images/bg3.png);
		background-repeat: no-repeat;
		background-size: 96%;
	}
</style>

</head>
<body ng-app="mainApp" ng-controller="indexCtrl" style="background: #f02d2f;">
<main style="background: #f02d2f;">
	<div class="draw" id="lottery">
		<table>
			<tr>
				<td class="item lottery-unit lottery-unit-0">
					<div class="img">
						<img src="images/img1.png" alt="">
					</div>
					<span class="name">终身VIP会员</span>
				</td>
				<td class="gap"></td>
				<td class="item lottery-unit lottery-unit-1">
					<div class="img">
						<img src="images/img2.png" alt="">
					</div>
					<span class="name">三年VIP会员</span>
				</td>
				<td class="gap"></td>
				<td class="item lottery-unit lottery-unit-2">
					<div class="img">
						<img src="images/img3.png" alt="">
					</div>
					<span class="name">半年VIP会员</span>
				</td>
			</tr>
			<tr>
				<td class="gap-2" colspan="5"></td>
			</tr>
			<tr>
				<td class="item lottery-unit lottery-unit-7">
					<div class="img">
						<img src="images/img4.png" alt="">
					</div>
					<span class="name">399元充值卡一张</span>
				</td>
				<td class="gap"></td>
				<td class="">
					<a class="draw-btn" href="javascript:"></a>
				</td>
				<td class="gap"></td>
				<td class="item lottery-unit lottery-unit-3">
					<div class="img">
						<img src="images/img5.png" alt="">
					</div>
					<span class="name">100元充值卡一张</span>
				</td>
			</tr>
			<tr>
				<td class="gap-2" colspan="5"></td>
			</tr>
			<tr>
				<td class="item lottery-unit lottery-unit-6">
					<div class="img">
						<img src="images/img7.png" alt="">
					</div>
					<span class="name">免费体验一次</span>
				</td>
				<td class="gap"></td>
				<td class="item lottery-unit lottery-unit-5">
					<div class="img">
						<img src="images/img6.png" alt="">
					</div>
					<span class="name">九折优惠券一张</span>
				</td>
				<td class="gap"></td>
				<td class="item lottery-unit lottery-unit-4">
					<div class="img">
						<img src="images/img8.png" alt="">
					</div>
					<span class="name">参与大礼包一份</span>
				</td>
			</tr>
		</table>
	</div>

</main>
<!--弹窗layer-->
<script src="js/layer.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.lottery-unit-' + this.index).addClass('active');
			};
		},
		roll: function() {
			var index = this.index;
			var count = this.count;
			var lottery = this.obj;
			//清除当前转动位置‘active’,然后index加1,向下一个位置添加‘active’
			$(lottery).find('.lottery-unit.lottery-unit-' + index).removeClass('active');
			index += 1;
			if(index > count - 1) {
				index = 0;
			};
			$(lottery).find('.lottery-unit.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方法,这里是第一次调用初始化
		 //转动次数不低于最低转动次数且移动到中奖位置停止
		if(lottery.times > lottery.cycle + 10 && lottery.prize == lottery.index) {
			clearTimeout(lottery.timer);
			//重置中奖位置与转动圈数
			//重置防止连续点击的开关变量click
			lottery.prize = -1;
			lottery.times = 0;
			click = false;
			layer.open({
			   type: 1,			           
			   shadeClose: true,
			   shade: false,
			   maxmin: true, //开启最大化最小化按钮
			   area: ['893px', '600px'],
			   content: $("#info").html()
			});
		} else {
			//视觉上的转动效果函数
			lottery.roll();
			// 转动次数小于最低转动次数
			if(lottery.times < lottery.cycle) {
				lottery.speed -= 10;
			} else if(lottery.times == lottery.cycle) {
				//转动次数等于最低转动次数
				var index = Math.random() * (lottery.count) | 0; //静态演示,随机产生一个奖品序号,实际需请求接口产生
				index=5;
				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;
			};
			lottery.timer = setTimeout(roll, lottery.speed); //循环调用
		}
		return false;
	}

	var click = false;

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


<div id='info' style = "display : none">
   <a href=""><img src="images/tk_img.png"></a>
   <h1>100元</h1>
</div>

<div style="text-align:center;margin:1px 0; font:normal 14px/24px 'MicroSoft YaHei';">
</div>
</body>
</html>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
此资源包括抽奖相关所有的配置,中奖概率配置、奖品表、抽奖记录表和通用存储过程算法。 可以指定多少次以后在按照正常概率来计算,中奖个数,如果奖品全部被完就永远不中,中奖率和中奖最大范围有关,数字越大概率越低,反正越高。由于涉及到一些敏感表数据,只提供主要的中奖表,如用户流水账号信息这些表不提供。 规则: --中奖率公式:中奖率 = 奖项数字范围 ÷ 摇奖数字范围 ÷ 中奖数字范围 --1、摇奖数字范围最小值和最大值定义了产生奖项数字的范围。 --2、中奖数字范围是从1到中奖范围的最大值,此范围内产生中奖号码。 /* 比如说,现在有三个选择一等、二等、三等。 可以设置“摇奖数字选项”为 1-30 一等 奖项数字范围1-10 二等 奖项数字范围 11-20 三等 奖项数字范围 21-30 所设置的奖项数字范围必须在 “摇奖数字选项”范围内,而且不得交叉、重叠。 如果我其中一个设置1-12 另外一个设置10-20 那么就重叠了。 而且为了方便调整中奖率,建议把所有的 奖项数字范围全部设置等距离。如现在有十二个选项,那么依次可以设置成为以下: 1-10、11-20、21-30、...、111-120 那么自然 “摇奖数字范围”就是1-120 现在需要调整中奖率的大小,中奖号码不用改了,全部设置成为1. 然后去调整中奖数字范围。 比如说 一等 中奖数字范围 1-30 二等 中奖数字范围 1-20 三等 中奖数字范围 1-10 那么具体这样设置下来,中奖率会有多高呢?算一下便知道。 一等:10/(30*30)=1/90 九十分之一。 二等:10/(30*20)=1/60 六十分之一。 三等:10/(30*10)=1/30 三十分之一。 所以设置的时候就把中奖号码都设置成1,只需要调整中奖数字范围便可。 */
用原生js实现的转盘抽奖九宫格抽奖插件! 1、转盘抽奖----指针旋转 // 指针旋转,从右向左顺时针计算奖品 var luckArr = ['100减99优惠券','谢谢参与','59减15优惠券','谢谢参与','39减10优惠券','谢谢参与']; var luck = new LuckDraw(); var startRotate = function(elem){ luck._init({ rotateId: '#luckPointer', luckNumber: Math.floor(Math.random() * (5 - 0) + 0), typeNumber: 6, time: 2000, type: 'turntable', circleNumber: 10, success: function(res){ console.log(res.luckNumber); console.log(luckArr[res.luckNumber]); alert(luckArr[res.luckNumber]); } }); } 2、转盘抽奖----转盘旋转 // 转盘旋转,从左向右逆时针计算奖品 var luckArr = ['100减99优惠券', '谢谢参与', '39减10优惠券', '谢谢参与', '59减15优惠券', '谢谢参与']; var luck = new LuckDraw(); var startRotate = function (elem) { luck._init({ rotateId: '#luckTurntable', luckNumber: Math.floor(Math.random() * (5 - 0) + 0), typeNumber: 6, time: 2000, type: 'turntable', circleNumber: 10, success: function (res) { console.log(res.luckNumber); console.log(luckArr[res.luckNumber]); alert(luckArr[res.luckNumber]); } }); } 3、九宫格抽奖 var luckArr = ['10元红包', 'iPad Mini', '莫灰心', '20元话费', '20元话费', '莫灰心', '某视频网站会员一月', '88元红包']; var luck = new LuckDraw(); var startRotate = function (elem) { luck._init({ rotateId: '.rui-luck-prize', activeClass: 'rui-active', luckNumber: Math.floor(Math.random() * (7 - 0) + 0), typeNumber: 8, time: 3000, type: 'prize', circleNumber: 10, success: function (res) { console.log(res.luckNumber) console.log(luckArr[res.luckNumber]) alert(luckArr[res.luckNumber]) } }); } 4、参数说明 | 参数 | 类型 | 必填 | 默认值 | 说明 | |----|-----|-----|-----|-----| | pointerId | String | 选填 | luckPointer | 指针对象id | | turntableId | String | 选填 | luckTurntable | 转盘对象id | | rotateId | String | 必填 | luckTurntable | 旋转对象id | | activeClass | String | 九宫格抽奖必填 | rui-active | 九宫格抽奖选中是的效果 | | type | String | 必填 | turntable | 选择是九宫格抽奖还是转盘抽奖(turntable:转盘抽奖;prize:九宫格抽奖) | | time | Number | 选填 | 2000 | 抽奖动作的时间 | | luckNumber | Number | 必填 | 4 | 中奖位置 | | typeNumber | Number | 必填 | 6 | 共有多少个中奖位置 | | circleNumber | Number | 必填 | 10 | 轮回圈数后中奖 | | success | Funtion | 选填 | function(){} | 中后返回的成功函数 |

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值