倒數效果有著廣泛的應用,例如奧運倒數計時、高考倒數計時和假期倒數計時等,本章節分享一個比較美觀且實用的倒數效果。
程式碼實例如下:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>倒计时效果代码</title> <style type="text/css"> * { padding:0; margin:0; } .colockbox { width:250px; height:30px; overflow:hidden; color:#000000; background:url(mytest/jQuery/colockbg.png) no-repeat; margin:0px auto; } .colockbox span { float:left; display:block; width:40px; height:29px; line-height:29px; font-size:20px; font-weight:bold; text-align:center; color:#ffffff; margin-right:22px; } </style> <script type="text/javascript" src="http://www.softwhy.com/mytest/jQuery/jquery-1.8.3.js"></script> <script type="text/javascript"> $(function(){ countDown("2016/2/3 6:30:59","#colockbox1"); }); function countDown(time,id){ var day_elem=$(id).find('.day'); var hour_elem=$(id).find('.hour'); var minute_elem=$(id).find('.minute'); var second_elem=$(id).find('.second'); var end_time = new Date(time).getTime(); var sys_second = (end_time-new Date().getTime())/1000; var timer = setInterval(function(){ if(sys_second>1) { sys_second-=1; var day=Math.floor((sys_second/3600)/24); var hour=Math.floor((sys_second/3600)%24); var minute=Math.floor((sys_second/60)%60); var second=Math.floor(sys_second%60); $(day_elem).text(day); $(hour_elem).text(hour<10?"0"+hour:hour); $(minute_elem).text(minute<10?"0"+minute:minute); $(second_elem).text(second<10?"0"+second:second); } else { clearInterval(timer); } }, 1000); } </script> </head> <body> <div class="colockbox" id="colockbox1"> <span class="day">00</span> <span class="hour">00</span> <span class="minute">00</span> <span class="second">00</span> </div> </body> </html>
以上程式碼實現了我們的要求,可以實現秒到天的倒數計時效果,以下就介紹一下實現過程。
一.實現原理:
原理比較簡單,就是取得到期時間的時間戳減去目前時間的時間戳,就是兩者之間相差的秒數,然後透過這個秒數除以3600就是相差的小時數,然後再除以24,然後使用Math.floor()函數進行下舍入,就是相差的天數,下面獲取小時、分鐘和秒都是此原理。使用定時器函數每隔一秒呼叫一次對應的函數就實現了倒數計時的效果。
二.程式碼註解:
1.$(function(){}),當文檔結構完全載入完畢再去執行函數中的程式碼。
2.countDown("2016/2/3 6:30:59","#colockbox1"),呼叫函數,第一個參數是到期的時間,第二個是div的id屬性值。
3.function countDown(time,id){},宣告此函數。
4.var day_elem=$(id).find('.day'),取得div下class屬性值為day的物件。
5.var hour_elem=$(id).find('.hour'),取得div下class屬性值為hour的物件。
6.var minute_elem=$(id).find('.minute'),取得div下class屬性值為minute的物件。
7.var second_elem=$(id).find('.second'),取得div下class屬性值為second的物件。
8.var end_time=new Date(time).getTime(),取得到期事件的時間戳記。
9.var sys_second=(end_time-new Date().getTime())/1000,取得到期時間和目前時間相差的秒數。
10.var timer=setInterval(function(){},1000),每隔一秒執行一次函數。
11.if(sys_second>1) ,如果相差的秒大於1。
12.sys_second-=1,秒減一。
13.var day=Math.floor((sys_second/3600)/24),取得相差的天數。
14.var hour=Math.floor((sys_second/3600)%24),取得相差的小時數,注意後面是取模運算。
15.var minute=Math.floor((sys_second/60)%60),取得相差的分鐘數。
16.var second=Math.floor(sys_second%60),取得相差的秒數。
17.$(day_elem).text(day),將天寫入span元素。
18.$(hour_elem).text(hour
19.clearInterval(timer),如果相差的秒數到0,就停止計時器函數setInterval的執行。
以上內容是小編給大家分享的基於jQuery實現美觀且實用的倒數實例代碼,希望本文分享能夠為大家帶來幫助。