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 相关文章推荐
Jquery显示、隐藏元素以及添加删除样式
Aug 09 Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
Jan 14 Javascript
基于jQuery实现仿51job城市选择功能实例代码
Mar 02 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
Jul 07 Javascript
利用JavaScript阻止表单提交的两种方法
Aug 11 Javascript
hovertree插件实现二级树形菜单(简单实用)
Dec 28 Javascript
AngularJS改变元素显示状态
Apr 20 Javascript
脚手架vue-cli工程webpack的基本用法详解
Sep 29 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
Jun 10 Javascript
jQuery操作元素追加内容示例
Jan 10 jQuery
详解JavaScript匿名函数和闭包
Jul 10 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 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
用RadioButten或CheckBox实现div的显示与隐藏
2013/09/21 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
python中assert用法实例分析
2015/04/30 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
python下载文件记录黑名单的实现代码
2017/10/24 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
初中生三年学习生活的自我评价
2013/11/03 职场文书
行政助理岗位职责
2013/11/10 职场文书
自主招生自荐信
2013/12/08 职场文书
企业厂长岗位职责
2013/12/17 职场文书
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
销售冠军获奖感言
2014/02/03 职场文书
材料会计岗位职责
2014/03/06 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
2014年教务工作总结
2014/12/03 职场文书
公务员考察材料
2014/12/23 职场文书
工资证明格式模板
2015/06/12 职场文书
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫
Python正则表达式中flags参数的实例详解
2022/04/01 Python