使用jQuery Rotare實(shí)現(xiàn)微信大轉(zhuǎn)盤(pán)抽獎(jiǎng)功能
很多公司到了年底都會(huì)做一些抽獎(jiǎng)活動(dòng)來(lái)刺激、吸引、粘住客戶,比如抽獎(jiǎng)轉(zhuǎn)盤(pán)活動(dòng)。
前幾天用一個(gè)jqueryRotate插件實(shí)現(xiàn)了轉(zhuǎn)盤(pán)的效果。比起那些很炫麗的flash是稍遜點(diǎn),但也基本實(shí)現(xiàn)了需求
效果圖:

實(shí)現(xiàn)這個(gè)其實(shí)蠻簡(jiǎn)單的,轉(zhuǎn)動(dòng)的效果用的jqueryRotate插件,所以只要判斷每個(gè)獎(jiǎng)薦對(duì)應(yīng)的角度,然后設(shè)置指針的轉(zhuǎn)動(dòng)角度就可以了。比如關(guān)鍵的是jqueryRotate這個(gè)插件的用法。
jqueryRotate的資料:
支持Internet Explorer 6.0+ 、Firefox 2.0 、Safari 3 、Opera 9 、Google Chrome,高級(jí)瀏覽器下使用Transform,低版本ie使用VML實(shí)現(xiàn)
google code地址:http://code.google.com/p/jqueryrotate/
調(diào)用和方法:
$(el).rotate({
angle:0, //起始角度
animateTo:180, //結(jié)束的角度
duration:500, //轉(zhuǎn)動(dòng)時(shí)間
callback:function(){}, //回調(diào)函數(shù)
easing: $.easing.easeInOutExpo //定義運(yùn)動(dòng)的效果,需要引用jquery.easing.min.js的文件
})
$(el).rotate(45); //直接這樣子調(diào)用的話就是變換角度
$(el).getRotateAngle(); //返回對(duì)象當(dāng)前的角度
$(el).stopRotare(); //停止旋轉(zhuǎn)動(dòng)畫(huà)
另外可以更方便的通過(guò)調(diào)用$(el).rotateRight()和$(el).rotateLeft()來(lái)分別向右旋轉(zhuǎn)90度和向左旋轉(zhuǎn)90度。
很簡(jiǎn)單吧,各種example可以看這里:http://code.google.com/p/jqueryrotate/wiki/Examples
下面是用jqueryRotate實(shí)現(xiàn)的抽獎(jiǎng)轉(zhuǎn)盤(pán)頁(yè)面:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>轉(zhuǎn)盤(pán)</title>
<style>
*{padding:0;margin:0}
body{
text-align:center
}
.ly-plate{
position:relative;
width:509px;
height:509px;
margin: 50px auto;
}
.rotate-bg{
width:509px;
height:509px;
background:url(ly-plate.png);
position:absolute;
top:0;
left:0
}
.ly-plate div.lottery-star{
width:214px;
height:214px;
position:absolute;
top:150px;
left:147px;
/*text-indent:-999em;
overflow:hidden;
background:url(rotate-static.png);
-webkit-transform:rotate(0deg);*/
outline:none
}
.ly-plate div.lottery-star #lotteryBtn{
cursor: pointer;
position: absolute;
top:0;
left:0;
*left:-107px
}
</style>
</head>
<body>
<div class="ly-plate">
<div class="rotate-bg"></div>
<div class="lottery-star"><img src="rotate-static.png" id="lotteryBtn"></div>
</div>
</body>
<script src="jquery-1.7.2.min.js"></script>
<script src="jQueryRotate.2.2.js"></script>
<script>
$(function(){
var timeOut = function(){ //超時(shí)函數(shù)
$("#lotteryBtn").rotate({
angle:0,
duration: 10000,
animateTo: 2160, //這里是設(shè)置請(qǐng)求超時(shí)后返回的角度,所以應(yīng)該還是回到最原始的位置,2160是因?yàn)槲乙屗D(zhuǎn)6圈,就是360*6得來(lái)的
callback:function(){
alert('網(wǎng)絡(luò)超時(shí)')
}
});
};
var rotateFunc = function(awards,angle,text){ //awards:獎(jiǎng)項(xiàng),angle:獎(jiǎng)項(xiàng)對(duì)應(yīng)的角度,text:提示文字
$('#lotteryBtn').stopRotate();
$("#lotteryBtn").rotate({
angle:0,
duration: 5000,
animateTo: angle+1440, //angle是圖片上各獎(jiǎng)項(xiàng)對(duì)應(yīng)的角度,1440是我要讓指針旋轉(zhuǎn)4圈。所以最后的結(jié)束的角度就是這樣子^^
callback:function(){
alert(text)
}
});
};
$("#lotteryBtn").rotate({
bind:
{
click: function(){
var time = [0,1];
time = time[Math.floor(Math.random()*time.length)];
if(time==0){
timeOut(); //網(wǎng)絡(luò)超時(shí)
}
if(time==1){
var data = [1,2,3,0]; //返回的數(shù)組
data = data[Math.floor(Math.random()*data.length)];
if(data==1){
rotateFunc(1,157,'恭喜您抽中的一等獎(jiǎng)')
}
if(data==2){
rotateFunc(2,247,'恭喜您抽中的二等獎(jiǎng)')
}
if(data==3){
rotateFunc(3,22,'恭喜您抽中的三等獎(jiǎng)')
}
if(data==0){
var angle = [67,112,202,292,337];
angle = angle[Math.floor(Math.random()*angle.length)]
rotateFunc(0,angle,'很遺憾,這次您未抽中獎(jiǎng)')
}
}
}
}
});
})
</script>
</html>
這里的time跟data是要從后臺(tái)獲取的,但這里只是靜態(tài)頁(yè)面,所以我就利用了random隨機(jī)數(shù)來(lái)盡量模擬抽獎(jiǎng)的過(guò)程了。
time參數(shù)表示從后臺(tái)請(qǐng)求是否成功,0是請(qǐng)求超時(shí),1是請(qǐng)求成功(成功后再判斷返回的值是什么樣);
data就是請(qǐng)求返回的數(shù)據(jù),1,2,3表示一二三等獎(jiǎng),0是不中獎(jiǎng),根據(jù)返回的數(shù)據(jù),再去設(shè)置指針旋轉(zhuǎn)的角度。
因?yàn)檫@個(gè)圖片上的角度無(wú)法用公式計(jì)算出來(lái),所以只能這樣子計(jì)算出來(lái)后定死。
如果比較規(guī)則的話,應(yīng)該可以用公式計(jì)算。
其實(shí)難得不在前臺(tái),別人寫(xiě)好的插件,我們拿來(lái)用就好,真正難的是在后臺(tái),定一個(gè)什么樣的規(guī)則,搞一個(gè)什么樣的算法,大家去思考去吧~~呵呵~~
以上就是本文的全部?jī)?nèi)容,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- jQuery實(shí)現(xiàn)微信長(zhǎng)按識(shí)別二維碼功能
- jQuery+PHP實(shí)現(xiàn)微信轉(zhuǎn)盤(pán)抽獎(jiǎng)功能的方法
- jquery1.8版本使用ajax實(shí)現(xiàn)微信調(diào)用出現(xiàn)的問(wèn)題分析及解決辦法
- 使用jQuery.wechat構(gòu)建微信WEB應(yīng)用
- jquery使用ajax實(shí)現(xiàn)微信自動(dòng)回復(fù)插件
- Jquery 類(lèi)網(wǎng)頁(yè)微信二維碼圖塊滾動(dòng)效果具體實(shí)現(xiàn)
- JavaScript結(jié)合Bootstrap仿微信后臺(tái)多圖文界面管理
- jquery仿微信聊天界面
相關(guān)文章
jQuery animate和CSS3相結(jié)合實(shí)現(xiàn)緩動(dòng)追逐效果附源碼下載
這篇文章主要介紹了jQuery animate和CSS3相結(jié)合實(shí)現(xiàn)緩動(dòng)追逐效果的相關(guān)資料,需要的朋友可以參考下2016-04-04
jquery實(shí)現(xiàn)點(diǎn)擊左右按鈕切換圖片
這篇文章主要為大家詳細(xì)介紹了jquery實(shí)現(xiàn)點(diǎn)擊左右按鈕切換圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01
jQuery設(shè)置單選按鈕radio選中/不可用的實(shí)例代碼
這篇文章主要介紹了jQuery設(shè)置單選按鈕radio選中/不可用的實(shí)例代碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
jQuery中的on與bind綁定事件區(qū)別實(shí)例詳解
bind與on的區(qū)別就在于–事件冒泡,關(guān)于jquery中的on與bind綁定事件的區(qū)別通過(guò)本文給大家實(shí)例講解,需要的朋友參考下吧2017-02-02
jquery獲取自定義屬性(attr和prop)實(shí)例介紹
jquery中用attr()方法來(lái)獲取和設(shè)置元素屬性,attr是attribute(屬性)的縮寫(xiě),在jQuery DOM操作中會(huì)經(jīng)常用到attr(),attr()有4個(gè)表達(dá)式2013-04-04
jquery操作iframe實(shí)現(xiàn)父頁(yè)面和子頁(yè)面相互操作的九種情況
現(xiàn)實(shí)開(kāi)發(fā)中難免會(huì)遇到子頁(yè)面、父頁(yè)面相互操作的情況,本文主要介紹了jquery操作iframe實(shí)現(xiàn)父頁(yè)面和子頁(yè)面相互操作的九種情況,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
JQuery入門(mén)——事件切換之toggle()方法應(yīng)用介紹
在toggle()方法中,可以依次調(diào)用N個(gè)指定的函數(shù),直到最后一個(gè)函數(shù),然后重復(fù)對(duì)這個(gè)函數(shù)輪番調(diào)用,在函數(shù)之間切換調(diào)用的時(shí)候相當(dāng)?shù)姆奖?接下來(lái)將會(huì)詳細(xì)介紹toggle()方法的使用,感興趣的你可不要錯(cuò)過(guò)了啊2013-02-02

