在前端開發(fā)中,javascript是不可避免的一部分。作為一種強大的腳本語言,它可以輕松實現(xiàn)網(wǎng)頁的交互效果,為用戶帶來更加友好的體驗。今天我們來聊聊一些經(jīng)典的javascript案例,看看它們是如何實現(xiàn)的。
第一個案例是圖片輪播。當(dāng)我們打開一些網(wǎng)站的首頁時,常常會看到一些圖片自動輪播的效果,這個效果也可以使用javascript來實現(xiàn)。下面是這個案例的核心代碼:
let currentIndex = 1;
let timer;
function changeImg() {
let imgs = document.querySelectorAll('.img');
let dots = document.querySelectorAll('.dot');
for (let i = 0; i< imgs.length; i++) {
imgs[i].style.display = 'none';
dots[i].classList.remove('active');
}
imgs[currentIndex-1].style.display = 'block';
dots[currentIndex-1].classList.add('active');
currentIndex++;
if (currentIndex >imgs.length) {
currentIndex = 1;
}
timer = setTimeout(changeImg, 2000);
}
changeImg();
上面的代碼使用了一個計時器來間隔一段時間執(zhí)行changeImg函數(shù),從而實現(xiàn)圖片的自動輪播。其中,imgs和dots分別是存儲圖片和圓點的列表,currentIndex是當(dāng)前顯示的圖片序號。
第二個案例是抽獎。許多網(wǎng)站在一些重要的日子會舉行抽獎活動,javascript可以幫助我們實現(xiàn)這個功能。下面是這個案例的核心代碼:
let btn = document.querySelector('.btn');
let nums = document.querySelectorAll('.num');
let result = document.querySelector('.result');
function random(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
function showNum() {
let arr = [];
for (let i = 0; i< 5; i++) {
arr.push(random(0, 9));
}
for (let i = 0; i< nums.length; i++) {
nums[i].innerText = arr[i];
}
result.innerText = arr.join('');
}
btn.onclick = showNum;
上面的代碼使用了一個random函數(shù)來生成隨機的數(shù)字,然后在showNum函數(shù)中將這些數(shù)字顯示到屏幕上。其中,btn是抽獎按鈕,nums是存儲數(shù)字的列表,result是存儲抽獎結(jié)果的標簽。
第三個案例是滾動加載。當(dāng)我們需要加載大量的數(shù)據(jù)時,一次性加載會導(dǎo)致網(wǎng)頁的卡頓,這時候就需要使用滾動加載。下面是這個案例的核心代碼:
let box = document.querySelector('.box');
let scrollTop = 0;
let clientHeight = document.documentElement.clientHeight;
window.onscroll = function() {
scrollTop = document.documentElement.scrollTop;
let boxHeight = box.offsetHeight;
if (scrollTop >= boxHeight - clientHeight) {
// 加載數(shù)據(jù)
}
}
上面的代碼使用了window.onscroll函數(shù)來監(jiān)聽滾動事件,然后判斷滾動距離和頁面高度的差值是否小于等于瀏覽器窗口的高度,如果是就說明滾動到底部了,可以開始加載數(shù)據(jù)了。
總的來說,javascript經(jīng)典案例很多,通過學(xué)習(xí)這些案例的代碼可以幫助我們更好地理解javascript的應(yīng)用,同時也可以為我們解決實際的開發(fā)問題提供思路。