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 相关文章推荐
JavaScript 拾漏补遗
Dec 27 Javascript
jquery控制listbox中项的移动并排序的实现代码
Sep 28 Javascript
小巧强大的jquery layer弹窗弹层插件
Dec 06 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
Feb 01 Javascript
Winform客户端向web地址传参接收参数的方法
May 17 Javascript
Ajax与服务器(JSON)通信实例代码
Nov 05 Javascript
jQuery实现背景滑动菜单
Dec 02 Javascript
详解Angular的双向数据绑定(MV-VM)
Dec 26 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
Sep 27 Javascript
JQuery的加载和选择器用法简单示例
May 13 jQuery
Layui多选只有最后一个值的解决方法
Sep 02 Javascript
功能完善的小程序日历组件的实现
Mar 31 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
discuz目录文件资料汇总
2014/12/30 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
详解Python中的日志模块logging
2015/06/19 Python
Python操作MySQL数据库9个实用实例
2015/12/11 Python
Python中按值来获取指定的键
2019/03/04 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
幼儿园亲子活动总结
2014/04/26 职场文书
小学校长竞聘演讲稿
2014/05/16 职场文书
戒毒悔改检讨书
2014/09/21 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
参观邀请函范文
2015/02/02 职场文书
2015年质检工作总结
2015/05/04 职场文书
五一放假通知怎么写
2015/08/18 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS