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 判断一个元素是否在页面中存在
Dec 27 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
Sep 26 Javascript
javascript的parseFloat()方法精度问题探讨
Nov 26 Javascript
headjs实现网站并行加载但顺序执行JS
Nov 29 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
Feb 22 Javascript
使用puppeteer破解极验的滑动验证码
Feb 24 Javascript
详解Vue源码学习之callHook钩子函数
Jul 25 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
Jun 19 Javascript
javascript中的this作用域详解
Jul 15 Javascript
js实现随机抽奖
Mar 19 Javascript
jQuery实现飞机大战小游戏
Jul 05 jQuery
js简单粗暴的发布订阅示例代码
Jan 23 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生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python获得图片base64编码示例
2014/01/16 Python
初学Python实用技巧两则
2014/08/29 Python
从Python程序中访问Java类的简单示例
2015/04/20 Python
Python获取当前路径实现代码
2017/05/08 Python
Python饼状图的绘制实例
2019/01/15 Python
python交易记录整合交易类详解
2019/07/03 Python
Python实现最常见加密方式详解
2019/07/13 Python
python多线程与多进程及其区别详解
2019/08/08 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
总监职责范文
2013/11/09 职场文书
数控专业大学生的自我鉴定
2013/11/13 职场文书
学校采购员岗位职责
2014/01/02 职场文书
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
学习礼仪心得体会
2014/09/01 职场文书
爱护公物演讲稿
2014/09/09 职场文书
新闻发布会活动策划方案
2014/09/15 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python