上次發表了一篇 微信抽獎轉盤活動-效果源碼分析
最近想起了剛接到這個項目時第一時間腦海里迸出的解決方法 “CSS3”!
為什么不能用CSS3來實現呢? 所以我打算用CSS3來實現這個效果。並不需要依賴jquery的動畫效果插件,旋轉角度插件。
不廢話 貼源碼:
PS:該動畫不支持IE10及以下(11沒測 應該也不支持,想要全兼容訪問jquery版本-詳見第一行連接),其他瀏覽器測試可用。UC,微信內核測試可用。
(DEMO附件在下方,需wamp環境。)
<!--最基本的結構--> <div class="demo"> <img id="disk" src="disk.jpg" /> <img src="start.png" id="startbtn" class="start done"> </div>
/*負責動畫效果的CSS*/ .done{ -webkit-transition: 2s ease; -moz-transition:2s ease; -o-transition:2s ease; transition:2s ease; }
$(function(){ $("#startbtn").click(function(){ lottery() //點擊執行函數ajax }); }); var a = 0; //聲明一個數值a function lottery(){ $.ajax({ type: 'POST', url: 'json.php', dataType: 'json', cache: false, error: function(){ alert('出錯了!'); return false; }, success:function(json){ //角度 b = PHP傳來的角度 +720(為了保證動畫不會太快停止 先轉兩圈)+ 聲明的數值a var b = json.angle+720+a; //獎項 var p = json.prize; //點擊之后才能運行動畫,所以必須動態加載style 兩個值為了兼容chrome & firefox & safair document.getElementById('startbtn').setAttribute("style","-webkit-transform: rotate("+b+"deg);transform: rotate("+b+"deg)") //每次執行完通過a使下次多轉3圈
//因為每次執行動畫后CSS3中rotate()的值是保存的,如果不增加一定得角度,則將在PHP返回的角度內轉動,即360度以內轉動
a += 1080; //動畫效果為2S,動畫播放完執行彈窗效果 setTimeout(slideFunction,2000); function slideFunction(){ var con = confirm('恭喜你,中得'+p+'\n還要再來一次嗎?'); if(con){ lottery(); }else{ return false; } } } }); }
由於是自學JS,寫的並不精簡.. 只為實現想法的效果罷了。見諒!
下載地址:http://pan.baidu.com/s/1ntiCaKx
作者:Margo_test
出處:http://www.cnblogs.com/margo/
歡迎分享與轉載。