
批改狀態(tài):合格
老師批語(yǔ):這個(gè)案例并不難,但應(yīng)用了非常的多基礎(chǔ)知識(shí) , 值得多寫(xiě)幾次的
html
<!-- @format -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>輪播圖</title>
<link rel="stylesheet" href="slider.css" />
</head>
<body>
<div class="box">
<img
src="banner/banner1.jpg"
alt=""
data-index="1"
class="slider active"
/>
<img src="banner/banner2.jpg" alt="" data-index="2" class="slider" />
<img src="banner/banner3.jpg" alt="" data-index="3" class="slider" />
<img src="banner/banner4.jpg" alt="" data-index="4" class="slider" />
<div class="point-list">
<!-- <span class="point active" data-index="1"></span>
<span class="point" data-index="2"></span>
<span class="point" data-index="3"></span> -->
</div>
<span class="skip prev"><</span>
<span class="skip next">></span>
</div>
<script src="slider.js"></script>
</body>
</html>
slider.js
/** @format */
//獲取所有圖片
var imgs = document.querySelectorAll(".box>img");
//獲取小圓點(diǎn)父節(jié)點(diǎn)
var point_list = document.querySelector(".point-list");
//按圖片數(shù)量生成對(duì)應(yīng)小圓點(diǎn)
imgs.forEach(function (item, index) {
let span = document.createElement("span");
if (index == 0) {
span.classList.add("active");
}
span.classList.add("point");
span.dataset.index = item.dataset.index;
point_list.append(span);
});
var points = document.querySelectorAll(".point");
//為小圓點(diǎn)添加點(diǎn)擊事件
point_list.addEventListener("click", function (event) {
//判斷事件節(jié)點(diǎn)類(lèi)型,避免父節(jié)點(diǎn)觸發(fā)事件
if (event.target.nodeName.toLowerCase() == "span") {
imgs.forEach(function (img) {
img.classList.remove("active");
if (img.dataset.index == event.target.dataset.index) {
img.classList.add("active");
setPointActive(img.dataset.index);
}
});
}
});
function setPointActive(index) {
points.forEach(function (point) {
point.classList.remove("active");
if (point.dataset.index == index) {
point.classList.add("active");
}
});
}
//-------------------翻頁(yè)功能------------------------
//獲取翻頁(yè)按鈕
var skip = document.querySelectorAll(".skip");
skip.item(0).addEventListener("click", skipImg);
skip.item(1).addEventListener("click", skipImg);
function skipImg(ev) {
var currentImg = null;
//獲取當(dāng)前顯示的圖片
imgs.forEach(function (img) {
if (img.classList.contains("active")) {
currentImg = img;
}
});
//判斷prev是否被點(diǎn)擊
if (ev.target.classList.contains("prev")) {
currentImg.classList.remove("active");
//設(shè)置當(dāng)前圖片為前一張圖片
currentImg = currentImg.previousElementSibling;
// 判斷當(dāng)前圖片是否為空,節(jié)點(diǎn)類(lèi)型是否符合
if (currentImg !== null && currentImg.nodeName.toLowerCase() === "img") {
currentImg.classList.add("active");
} else {
currentImg = imgs[imgs.length - 1];
currentImg.classList.add("active");
}
}
//判斷next是否被點(diǎn)擊
if (ev.target.classList.contains("next")) {
currentImg.classList.remove("active");
currentImg = currentImg.nextElementSibling;
if (currentImg !== null && currentImg.nodeName.toLowerCase() === "img") {
currentImg.classList.add("active");
} else {
currentImg = imgs[0];
currentImg.classList.add("active");
}
}
setPointActive(currentImg.dataset.index);
}
//----------------------------自動(dòng)播放實(shí)現(xiàn)-----------------------
var timer = setInterval(autoPlay, 5000);
var box = document.querySelector(".box");
box.addEventListener("mouseover", function () {
clearInterval(timer);
});
//鼠標(biāo)移出后2秒開(kāi)始播放下一張,并設(shè)置一個(gè)新的定時(shí)器
box.addEventListener("mouseout", function () {
setTimeout(function () {
autoPlay();
timer = setInterval(autoPlay, 5000);
}, 2000);
});
function autoPlay() {
var currentImg = null;
imgs.forEach(function (img) {
if (img.classList.contains("active")) {
currentImg = img;
}
});
currentImg.classList.remove("active");
currentImg = currentImg.nextElementSibling;
if (currentImg != null && currentImg.nodeName.toLowerCase() === "img") {
currentImg.classList.add("active");
} else {
currentImg = imgs[0];
currentImg.classList.add("active");
}
setPointActive(currentImg.dataset.index);
}
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)