特效介绍

jquery幸运大转盘,jquery转盘抽奖插件

中奖提示效果图
幸运大转盘抽奖jquery插件,转动起来本身不转,而是转盘上的光斑会转动,跑马灯也会跟着闪烁,转的越快,闪烁越快。转动结束,光斑会停留在中奖的那一栏,并且弹出对应的中奖提示,还可以发微博等等。本插件抽奖概率、中奖奖品等等都可以直接在参数中设置,非常方便,而且兼容性非常好。我爱模板网目前测试到了IE7,没有任何问题。
使用方法
第一步:在head引入下面的代码:
<link rel="stylesheet" type="text/css" href="css/reset.css" />
<link rel="stylesheet" type="text/css" href="css/common.css" />
<link rel="stylesheet" type="text/css" href="css/jqueryui/jqueryui.css" />
<script src="https://5.jimth.com/download/jquery/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="js/jqueryui.js"></script>
<style type="text/css">
body{background:url('images/bg_01.jpg') top center no-repeat #fff;font:Arial,Helvetica,sans-serif;}
#header{width:960px;margin:0 auto;position:relative;}
#turnplatewrapper{height:592px;width:592px;background:url('images/plate_06.png') top left no-repeat;left:200px;top:20px;position:absolute;-moz-user-select:none;user-select:none;}
#turnplate{height:592px;width:592px;background:url('images/plate_05.png') top left no-repeat;}
#turnplate #awards{position:absolute;width:100%;height:100%;background:url('images/plate_03.png') top left no-repeat;}
#platebtn{position:absolute;top:218px;left:218px;background:url('images/plate_04.png') top left no-repeat;height:155px;width:155px;cursor:pointer;}
#platebtn.hover{background-position:0 -155px }
#turnplate #platebtn.click{background-position:0 -310px }
#gift{width:398px;height:89px;background:url('images/plate_gift_01.png') top left no-repeat;position:absolute;left:90px;top:720px;}
#msg{position:absolute;display:none;top:130px;left:195px;border-radius:5px;color:#333;border:3px solid #FED33f;box-shadow:2px 2px 2px rgba(0,0,0,0.6);background:#fffcf2;width:200px;padding:10px;text-align:center;}
#init{position:absolute;top:50%;left:50%;width:100px;height:30px;border-radius:5px;color:#333;border:3px solid #FED33f;box-shadow:2px 2px 2px rgba(0,0,0,0.6);background:#fffcf2;width:250px;padding:10px;margin-top:-30px;margin-left:-138px;text-align:center;opacity:0.9;filter:alpha(opacity=90);}
#login{margin-left:20px;}
#login .tips{margin-left:50px;font-size:12px;margin-bottom:-5px;}
#login .tips a{color:#039;font-size:16px;text-decoration:underline;}
#login .msg{color:red;}
#login label{height:30px;line-height:30px;font-size:16px;}
#login .ipt{background:#fff;border:1px solid #ccc;height:28px;line-height:28px;margin-bottom:10px;box-shadow:0 1px 0 #fff;border-radius:2px;width:200px;}
#login .ipt:focus{box-shadow:0 0 3px rgba(86,180,289,0.3);border:1px solid #56b4ef;}
#lotteryMsg .msg{font-size:16px;color:red;font-weight:bold; text-align:center;font-size:26px;color:#ba0f54;line-height:1;margin-bottom:10px;}
#lotteryMsg .tips{text-align:center;font-size:14px;}
#lotteryMsg .sp{border-top:1px solid #c3c3c3;border-bottom:0 none transparent;border-right:0 none transparent;border-left:0 none transparent;overflow:hidden;height:0;margin:10px 0;}
#lotteryMsg a{color:#138cbe;}
#lotteryMsg a:hover{color:#039;}
#lotteryMsg .content{border:1px solid #ccc;border-radius:5px;padding:10px;background:#fff;line-height:1.5;}
#top-menu-wrapper{height:51px;background:url('images/bg_02.png') top center repeat-x;margin-bottom:-51px;}
#top-menu{width:960px;margin:0 auto;}
#top-menu a, #top-menu span{line-height:50px;display:inline-block;font-size:16px;color:#fff;text-decoration:1px 1px 2px rgba(0, 0, 0, 0.3);}
#top-menu .user{padding-left:30px;display:inline-block;height:50px;color:#fff;background:url('images/bg_03.png') 0 16px no-repeat;}
</style>
<style type="text/css">
/*jquery ui 定制 */
body .ui-dialog{padding:0px;background:#ebeae3;box-shadow:2px 2px 5px rgba(0,0,0,0.5);}
body .ui-dialog .ui-dialog-titlebar{height:23px;padding:0;margin:0;background:none;border:0 none transparent;}
body .ui-dialog .ui-dialog-titlebar .ui-dialog-title{display:none;}
body .ui-widget-content{border:4px solid #F7D102;}
body .ui-dialog .ui-dialog-titlebar-close{background:#f6d20d;right:0;margin-top:-12px;}
body .ui-dialog .ui-dialog-buttonpane{border:0 none transparent;}
body .ui-dialog .ui-button-text{padding:0.8em 1em;}
body .ui-widget-overlay{background:url('images/bg_04.png');_filter:alpha(opacity=60);}
.mv5{margin-left:5px;margin-right:5px;}
</style>
第二步:在body引入相关html代码:
<div id="top-menu-wrapper" class="dn bgfix"> <div id="top-menu"> <div class="l"> <a class="user bgfix" href="http://www.17sucai.com"> </a> <span>(今天还有</span><span class="lottery-times">0</span> <span>次抽奖机会)</span> </div> <a class="logout r" href="http://www.17sucai.com">退出</a> </div> </div> <div id="header"> <div id="turnplatewrapper" onselectstart="return false;" class="bgfix"> <div id="turnplate" class="bgfix"> <div id="awards" class="bgfix"></div> <div id="platebtn" class="bgfix"></div> <p id="msg"></p> <p id="init" class="dn">初始化中,请稍后<span></span></p> </div> </div> <div id="gift" class="bgfix"></div> </div> <div id="lotteryMsg" class="dn"> <p class="msg"></p> <p class="tips">中奖空间已自动添加到您的快盘帐号中,<a href="https://5.jimth.com" title="网站模板" target="_blank">点击查看</a>。</p> <hr class="sp" /> <p class="mv5" style="margin-bottom:5px">发送以下内容到新浪微博,还可额外获得5M永久空间哦!</p> <div class="content mv5"> “幸运大转盘,快盘送空间” <span class="option"></span>每日大转盘摇奖,轻松扩容,惊喜不断,抢100G永久空间点击->https://5.jimth.com 同步网盘领军产品,4500万用户的选择,值得信赖。 </div> </div> <!--新登录注册弹框--> <div id="new-login" class="dn"></div>第三步(非必须):如果要兼容IE6,还要引入一个IE6 PNG透明的js文件和代码:
<!--[if IE 6]>
<script src="js/DD_belatedPNG_0.0.8a-min.js"></script>
<script>DD_belatedPNG.fix('.bgfix');</script>
<![endif]-->
第四步:调用轮盘相关代码:
<script type="text/javascript">
//新登录
$('#new-login').dialog({
modal: true,
width:400,
heigth:220,
resizable: false,
autoOpen: false,
title: '请先登录'
});
</script>
<script type="text/javascript">
var isLogin = false;
</script>
<script type="text/javascript">
var turnplate = {
turnplateBox : $('#turnplate'),
turnplateBtn : $('#platebtn'),
lightDom : $('#turnplatewrapper'),
freshLotteryUrl : 'http://huodong.kuaipan.cn/ajaxTurnplate/freshLottery/',
msgBox : $('#msg'),
lotteryUrl : 'http://huodong.kuaipan.cn/ajaxTurnplate/lottery/',
height : '592', //帧高度
lightSwitch : 0, //闪灯切换开关. 0 和 1间切换
minResistance : 5, //基本阻力
Cx : 0.01, //阻力系数 阻力公式: totalResistance = minResistance + curSpeed * Cx;
accSpeed : 15, //加速度
accFrameLen : 40, //加速度持续帧数
maxSpeed : 250, //最大速度
minSpeed : 20, //最小速度
frameLen : 10, //帧总数
totalFrame : 0, //累计帧数,每切换一帧次数加1
curFrame : 0, //当前帧
curSpeed : 20, //上帧的速度
lotteryTime : 0, //抽奖次数
lotteryIndex : 6, //奖品index
errorIndex : 6, //异常时的奖品指针
initBoxEle : $('#turnplate #init'),
progressEle : $('#turnplate #init span'),
initProgressContent : '~~~^_^~~~', //初始化进度条的内容
initFreshInterval : 500, //进度条刷新间隔
virtualDistance : 10000, //虚拟路程,固定值,速度越快,切换到下帧的时间越快: 切换到下帧的时间 = virtualDistance/curSpeed
isStop : false, //抽奖锁,为true时,才允许下一轮抽奖
timer2 : undefined, //计时器
initTime : undefined,
showMsgTime : 2000, //消息显示时间
lotteryChannel: '',
channelList: {
'login': '每日登录',
'consume': '购买空间'
},
lotteryType : {
'5M' : 0,
'80M' : 1,
'1G' : 2,
'200M' : 3,
'100M' : 4,
'20M' : 5,
'empty' : 6,
'10G' : 7,
'50M' : 8,
'1T' : 9
},
lotteryList : [
'5M 永久空间',
'80M 永久空间',
'1G 永久空间',
'200M 永久空间',
'100M 永久空间',
'20M 永久空间',
'继续攒人品',
'10G 永久空间',
'50M 永久空间',
'1T 永久空间',
],
lotteryDes : [
'手气一般般,幸运指数半颗星!',
'手气不错呢,幸运指数3颗星!',
'手气无敌了,幸运指数4颗星!',
'手气很好呢,幸运指数3颗星!',
'手气很好呢,幸运指数3颗星!',
'手气还凑合,幸运指数1颗星!',
'手气太差了,幸运指数0颗星!',
'手气太好了,幸运指数5颗星!',
'手气还可以,幸运指数2颗星!',
'手气爆棚了,幸运指数5颗星!'
],
//初始化
init : function() {
this.initAnimate()
this.freshLottery();
this.turnplateBtn.click($.proxy(function(){
this.click();
},this));
},
//初始化动画
initAnimate : function() {
this.initBoxEle.show();
clearTimeout(this.initTimer);
var curLength = this.progressEle.text().length,
totalLength = this.initProgressContent.length;
if (curLength < totalLength) {
this.progressEle.text(this.initProgressContent.slice(0, curLength + 1));
}else{
this.progressEle.text('');
}
this.initTimer = setTimeout($.proxy(this.initAnimate, this), this.initFreshInterval);
},
//停止初始化动画
stopInitAnimate : function() {
clearTimeout(this.initTimer);
this.initBoxEle.hide();
},
freshLotteryTime : function() {
$('#top-menu').find('.lottery-times').html(this.lotteryTime);
},
//更新抽奖次数
freshLottery : function() {
this.stopInitAnimate();
this.setBtnHover();
this.isStop = true;
this.lotteryTime = 1;
this.freshLotteryTime();
},
//设置按钮三态
setBtnHover : function() {
//按钮三态
$('#platebtn').hover(function(){
$(this).addClass('hover');
},function() {
$(this).removeClass('hover click');
}).mousedown(function(){
$(this).addClass('click');
}).mouseup(function(){
$(this).removeClass('click');
});
},
//获取奖品
lottery : function() {
this.lotteryIndex = undefined;
this.lotteryTime--;
this.freshLotteryTime();
this.totalFrame = 0;
this.curSpeed = this.minSpeed;
this.turnAround();
this.lotteryIndex = typeof this.lotteryType[2] !== 'undefined' ? this.lotteryType[2] : this.errorIndex;
this.lotteryChannel = typeof this.channelList[1] !== 'undefined' ? this.channelList[1] : '';
},
//点击抽奖
click : function() {
//加锁时
if(this.isStop == false) {
this.showMsg('现在还不能抽奖哦');
return;
}
this.lottery();
},
//更新当前速度
freshSpeed : function() {
var totalResistance = this.minResistance + this.curSpeed * this.Cx;
var accSpeed = this.accSpeed;
var curSpeed = this.curSpeed;
if(this.totalFrame >= this.accFrameLen) {
accSpeed = 0;
}
curSpeed = curSpeed - totalResistance + accSpeed;
if(curSpeed < this.minSpeed){
curSpeed = this.minSpeed;
}else if(curSpeed > this.maxSpeed){
curSpeed = this.maxSpeed;
}
this.curSpeed = curSpeed;
},
//闪灯,切换到下一张时调用
switchLight : function() {
this.lightSwitch = this.lightSwitch === 0 ? 1 : 0;
var lightHeight = -this.lightSwitch * this.height;
this.lightDom.css('backgroundPosition','0 ' + lightHeight.toString() + 'px');
},
//旋转,trunAround,changeNext循环调用
turnAround : function() {
//加锁
this.isStop = false;
var intervalTime = parseInt(this.virtualDistance/this.curSpeed);
this.timer = window.setTimeout('turnplate.changeNext()', intervalTime);
},
//弹出奖品
showAwards : function(){
$('#lotteryMsg').dialog('open');
},
//显示提示信息
showMsg : function(msg, isFresh) {
isFresh = typeof isFresh == 'undefined' ? false : true;
if(typeof msg != 'string'){
msg = '今天已经抽过奖了,明天再来吧';
}
var msgBox = this.msgBox;
var display = msgBox.css('display');
msgBox.html(msg);
window.clearTimeout(this.timer2);
msgBox.stop(true,true).show();
var fadeOut = $.proxy(function() {
this.msgBox.fadeOut('slow');
}, this);
this.timer2 = window.setTimeout(fadeOut, this.showMsgTime);
},
//切换到下帧
changeNext : function() {
//判断是否应该停止
if(this.lotteryIndex !== undefined && this.curFrame == this.lotteryIndex && this.curSpeed <= this.minSpeed+10 && this.totalFrame > this.accFrameLen) {
this.isStop = true;
this.showAwards();
return;
}
var nextFrame = this.curFrame+1 < this.frameLen ? this.curFrame+1 : 0;
var bgTop = - nextFrame * this.height;
this.turnplateBox.css('backgroundPosition','0 ' + bgTop.toString() + 'px');
this.switchLight();
this.curFrame = nextFrame;
this.totalFrame ++;
this.freshSpeed();
this.turnAround();
}
}
</script>
<script type="text/javascript">
//登录插件
(function($){
$.fn.login = function(options){
settings = {
loginUrl: 'account/login/',
msgEle: $(this).find('.msg'),
loginIdEle: $(this).find('#loginId'),
passwordEle: $(this).find('#password')
};
var ERROR_MSG = {
'inputCorrectEmail': '请输入正确的用户名',
'inputPassword': '请填写登录密码',
'passwordLength': '密码应在6-32位字符内',
'noreg': '此账号未注册',
'checkemailcode_2':'此账号未注册',
'checkemailcode_':'服务器繁忙,请稍后再试',
'accountNotMatch': '账号密码不匹配',
'serverdown': '服务器维护中',
'clientUserBaned': '您的账号被限制登录',
'accUserInvalid': '正在对该账号进行绑定处理,暂无法登陆',
'userLocked': '帐号锁定中,暂时无法登录',
'inviladId': '帐号不存在'
}
function submit() {
var loginId = $.trim(settings.loginIdEle.val()),
password = $.trim(settings.passwordEle.val());
if(loginId == '') {
showMsg('登录名不能为空');
return;
}
if(password == '') {
showMsg('密码不能为空');
return;
}
$.post(settings.loginUrl, {'loginId': loginId, 'password': password}, function(data){
if(data.status == 'ok') {
location.reload();
} else {
if(typeof ERROR_MSG[data.status] == 'string') {
showMsg(ERROR_MSG[data.status]);
} else {
showMsg('服务器维护中');
}
}
}, 'json');
}
function showMsg(msg) {
settings.msgEle.html(msg);
}
if(typeof options == 'string'){
switch(options) {
case 'submit':
submit();
break;
default:
}
}
return $(this);
}
})(jQuery);
$('#lotteryMsg').dialog({
modal: true,
width: 500,
height: 350,
resizable: false,
title: '获奖信息',
autoOpen: false,
open: function(){
var showMsg = '您抽中了: ' + turnplate.lotteryList[turnplate.lotteryIndex] /*+ ' (来自:' + turnplate.lotteryChannel + ')'*/;
var options = '今天抽中了' + turnplate.lotteryList[turnplate.lotteryIndex] + ',' + turnplate.lotteryDes[turnplate.lotteryIndex];
$('#lotteryMsg').find('.msg').html(showMsg);
$('#lotteryMsg').find('.option').html(options);
},
buttons: [{
text:'发微博领5M空间',
click: function() {
var options = '今天抽中了' + turnplate.lotteryList[turnplate.lotteryIndex] + ',' + turnplate.lotteryDes[turnplate.lotteryIndex];
var jumpUrl = "https://5.jimth.com";
window.open(jumpUrl, "top", "width=1024,height=750,menubar=0,scrollbars=1, resizable=1,status=1,titlebar=0,toolbar=0,location=1");
$(this).dialog('close');
}
}]
});
$('#login').dialog({
modal: true,
width: 350,
resizable: false,
title: '请先登录',
autoOpen: false,
open: function(){
//监听回车事件
$('#login').bind('keydown', function(e){
if(e.which == '13'){
$('#login').login('submit');
}
});
},
close: function(){
//取消监听
$('#login').unbind('keydown');
$('#login #password').val('');
},
buttons:[{
text: '登录',
click: function(){
$('#login').login('submit');
}
}]
});
turnplate.init();
</script>
具体怎么设置,上面的参数都已说明。