JavaScript倒計時是現今網站常用的特效之一,可以為網站的使用者營造出濃厚的節日氣氛,更是一種加強用戶體驗的利器。例如,紅包活動的倒計時,秒殺活動倒計時等等,都需要通過JavaScript實現倒計時的功能。今天我們來簡單了解一下使用JavaScript實現好看的倒計時特效。
首先,我們需要明確倒計時的原理。倒計時的實現原理主要就是計算時間,然后通過計算,顯示出具有倒計時特效的效果。針對計算時間,JavaScript可以通過Date對象獲取系統的時間(毫秒級別),通過操作系統獲取到的時間,再利用JavaScript計算的方式,實現倒計時。下面我們來看一下如何使用JavaScript去實現倒計時。
// 倒計時,endTime可以傳入一個時間戳,或者時間字符串 "2022-01-01 00:00:00" function countDown(endTime) { let endTimeStamp = typeof(endTime) == 'number' ? endTime : (new Date(endTime)).getTime(); // 獲取結束時間的時間戳 let nowTimeStamp = new Date().getTime(); // 獲取當前時間的時間戳 let timeDiff = endTimeStamp - nowTimeStamp; // 時間差,單位為毫秒 let day = Math.floor(timeDiff / (24 * 60 * 60 * 1000)); // 計算天數 let hour = Math.floor((timeDiff % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000)); // 計算時數 let min = Math.floor((timeDiff % (60 * 60 * 1000)) / (60 * 1000)); // 計算分數 let sec = Math.floor((timeDiff % (60 * 1000)) / 1000); // 計算秒數 return {day: day, hour: hour, min: min, sec: sec}; }
在此我們的倒計時本質上就是一個計算器,當然需要對計算工具進行進一步完善,我們需要對數字進行格式化的處理,加上動態的HTML標簽進行樣式的美化,下面放一個簡單而好看的示例代碼:
function leadingZero(num) { return (num< 10 ? '0' : '') + num; } function formatTime(timeObj) { let {day, hour, min, sec} = timeObj; return `${day}${leadingZero(hour)}${leadingZero(min)}${leadingZero(sec)}`; } let endTime = new Date('2022-01-01 00:00:00').getTime(); let timer = setInterval(() =>{ let timeObj = countDown(endTime); if (timeObj.day<= 0 && timeObj.hour<= 0 && timeObj.min<= 0 && timeObj.sec<= 0) { clearInterval(timer); } document.getElementById('timer').innerHTML = formatTime(timeObj); }, 1000);
可以發現,我們在倒計時組件中給出了對應的CSS,所以在頁面中展示出來,可以獲得極佳的視覺效果和用戶體驗。相信通過上面這個簡單的示例代碼,你已經大概了解了倒計時的實現方法,同時也可以通過實現示例代碼自己優化,發揮你創意的想象力,做出更好的倒計時特效。
JavaScript的強大功能不僅限于此,實現倒計時的過程是我們可以學習到其中如何優化代碼,使用比較短小的代碼完成很多復雜的功能,開發者需要在學習與使用中深刻理解此功能。