jquery实现九宫格大转盘抽奖


Posted in Javascript onNovember 13, 2015

下面我们来分享一个九宫格抽奖特效

特效说明:

一款jQuery九宫格大转盘抽奖代码网页特效,点击抽奖按钮开始随机抽奖选择奖品,可设置起点位置、奖品数量、转动次数、中奖位置参数。(兼容测试:IE7及以上、Firefox、Chrome、Opera、Safari、360等主流浏览器)

HTML:

<!--效果html开始-->
<div id="lottery">
	<table border="0" cellpadding="0" cellspacing="0">
		<tr>
			<td class="lottery-unit lottery-unit-0"><img src="images/1.png"></td>
			<td class="lottery-unit lottery-unit-1"><img src="images/2.png"></td>
			<td class="lottery-unit lottery-unit-2"><img src="images/4.png"></td>
   <td class="lottery-unit lottery-unit-3"><img src="images/3.png"></td>
		</tr>
		<tr>
			<td class="lottery-unit lottery-unit-11"><img src="images/7.png"></td>
			<td colspan="2" rowspan="2"><a href="#"></a></td>
			<td class="lottery-unit lottery-unit-4"><img src="images/5.png"></td>
		</tr>
		<tr>
			<td class="lottery-unit lottery-unit-10"><img src="images/1.png"></td>
			<td class="lottery-unit lottery-unit-5"><img src="images/6.png"></td>
		</tr>
  <tr>
			<td class="lottery-unit lottery-unit-9"><img src="images/3.png"></td>
			<td class="lottery-unit lottery-unit-8"><img src="images/6.png"></td>
			<td class="lottery-unit lottery-unit-7"><img src="images/8.png"></td>
   <td class="lottery-unit lottery-unit-6"><img src="images/7.png"></td>
		</tr>
	</table>
</div>

js部分

<script type="text/javascript" src="jquery-1.8.3.min.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();
	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) {
			return false;
		}else{
			lottery.speed=100;
			roll();
			click=true;
			return false;
		}
	});
};
</script>

CSS部分

/* 效果CSS开始 */
#lottery{width:574px;height:584px;margin:0px auto;background:url(../images/bg.jpg) no-repeat;padding:50px 55px;}
#lottery table td{width:142px;height:142px;text-align:center;vertical-align:middle;font-size:24px;color:#333;font-index:-999}
#lottery table td a{width:284px;height:284px;line-height:150px;display:block;text-decoration:none;}
#lottery table td.active{background-color:#ea0000;}
/* 效果CSS结束 */

JS中可设置参数: 

index:-1,    //当前转动到哪个位置,起点位置
count:0,    //总共有多少个位置
timer:0,    //setTimeout的ID,用clearTimeout清除
speed:20,    //初始转动速度
times:0,    //转动次数
cycle:50,    //转动基本次数:即至少需要转动多少次再进入抽奖环节
prize:-1,    //中奖位置

最后奉上演示图

jquery实现九宫格大转盘抽奖

Javascript 相关文章推荐
Chrome中模态对话框showModalDialog返回值问题的解决方法
May 25 Javascript
TextArea设置MaxLength属性最大输入值的js代码
Dec 21 Javascript
JavaScript中Math对象方法使用概述
Jan 02 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 Javascript
微信小程序 textarea 详解及简单使用方法
Dec 05 Javascript
原生javascript移动端滑动banner效果
Mar 10 Javascript
canvas实现环形进度条效果
Mar 23 Javascript
浅谈关于axios和session的一些事
Jul 13 Javascript
jQuery Validate插件ajax方式验证输入值的实例
Dec 21 jQuery
10行代码实现微信小程序滑动tab切换
Dec 28 Javascript
基于JS实现一个随机生成验证码功能
May 29 Javascript
jQuery+ajax实现批量删除功能完整示例
Jun 06 jQuery
jquery动画效果学习笔记(8种效果)
Nov 13 #Javascript
javascript:void(0)点击登录没反应怎么解决
Nov 13 #Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
Nov 13 #Javascript
每天一篇javascript学习小结(Date对象)
Nov 13 #Javascript
有关Promises异步问题详解
Nov 13 #Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
Nov 13 #Javascript
Jquery promise实现一张一张加载图片
Nov 13 #Javascript
You might like
推荐文章系统(一)
2006/10/09 PHP
PHP简介
2006/10/09 PHP
第五章 php数组操作
2011/12/30 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
js微信分享API
2020/10/11 Javascript
解析vue中的$mount
2017/12/21 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
常见python正则用法的简单实例
2016/06/21 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
python之Character string(实例讲解)
2017/09/25 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
python selenium 执行完毕关闭chromedriver进程示例
2019/11/15 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
Python实现播放和录制声音的功能
2020/08/12 Python
端口镜像是怎么实现的
2014/03/25 面试题
《夜晚的实验》教学反思
2014/02/19 职场文书
关于感恩的演讲稿400字
2014/08/26 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
教师求职自荐信范文
2015/03/04 职场文书
药店营业员岗位职责
2015/04/14 职场文书
公司搬迁通知
2015/04/20 职场文书
MySQL数字类型自增的坑
2021/05/07 MySQL
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL