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 相关文章推荐
js 有框架页面跳转(target)三种情况下的应用
Apr 09 Javascript
jquery中get和post的简单实例
Feb 04 Javascript
jQuery事件绑定和委托实例
Nov 25 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
Sep 19 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
Feb 02 Javascript
深入理解JS中的Function.prototype.bind()方法
Oct 11 Javascript
webix+springmvc session超时跳转登录页面
Oct 30 Javascript
详解JS异步加载的三种方式
Mar 07 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
Jul 27 Javascript
webpack将js打包后的map文件详解
Feb 22 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
Apr 07 Javascript
vue点击标签切换选中及互相排斥操作
Jul 17 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站点的页面上添加Facebook评论插件的实例教程
2016/01/08 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
几个javascript操作word的参考代码
2009/10/26 Javascript
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
JqGrid web打印实现代码
2011/05/31 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
Python中一行和多行import模块问题
2018/04/01 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
Shell如何接收变量输入
2012/09/24 面试题
物流专业毕业生推荐信范文
2013/11/18 职场文书
旅游专业职业生涯规划范文
2014/01/13 职场文书
产品质量保证书
2014/04/29 职场文书
给公司的建议书范文
2014/05/13 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
平安家庭事迹材料
2014/12/20 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
2015年青年教师工作总结
2015/05/25 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
pytorch 如何使用batch训练lstm网络
2021/05/28 Python
python数字转对应中文的方法总结
2021/08/02 Python
MySQL创建管理RANGE分区
2022/04/13 MySQL