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 相关文章推荐
ExtJS 2.0实用简明教程 之Border区域布局
Apr 29 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
Apr 15 Javascript
jQuery 取值、赋值的基本方法整理
Mar 31 Javascript
js中hash和ico的关联分析
Feb 05 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
Apr 01 Javascript
JavaScript之数组(Array)详解
Apr 01 Javascript
javascript中this的四种用法
May 11 Javascript
jquery序列化方法实例分析
Jun 10 Javascript
基于Bootstrap实现图片轮播效果
May 22 Javascript
Json按某个键的值进行排序
Dec 22 Javascript
jQuery选择器之属性筛选选择器用法详解
Sep 19 jQuery
微信小程序自定义可滑动日历界面
Dec 28 Javascript
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
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
cakephp常见知识点汇总
2017/02/24 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
Ionic3 UI组件之autocomplete详解
2017/06/08 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
由浅入深讲解python中的yield与generator
2017/04/05 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
python下载的库包存放路径
2020/07/27 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
英国女性时尚品牌:Apricot
2018/12/04 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
网络技术支持面试题
2013/04/22 面试题
课前三分钟演讲稿
2014/04/24 职场文书
活动总结范文
2014/08/30 职场文书
工程质检员岗位职责
2015/04/08 职场文书
销售口号霸气押韵
2015/12/24 职场文书
Python标准库之typing的用法(类型标注)
2021/06/02 Python
golang中字符串MD5生成方式总结
2021/07/04 Golang
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS