javascript - 简单的 JS 轮播需要建议
问题描述
我正在尝试使用 JavaScript 创建一个简单的轮播,我遇到了一个问题,如何根据startingPosition
值显示幻灯片?
const items = document.getElementsByClassName("carousel__item")
let startingPosition = 0;
let totalItems = items.length;
const prevButton = document.querySelector(".prev")
const nextButton = document.querySelector(".next")
prevButton.addEventListener("click", () => {
if(startingPosition == 0) return;
startingPosition--;
}
);
nextButton.addEventListener("click", () => {
startingPosition++;
if(startingPosition == totalItems) {
startingPosition = 0;
}
}
);
.carousel {
max-width: 400px;
margin: 0 auto;
}
.carousel__item > img {
width: 100%;
}
<div class="carousel">
<div class="carousel__item">
<img src="https://www.greenqueen.com.hk/wp-content/uploads/2021/06/WEF-Investments-In-Nature-Based-Solutions-Have-To-Triple-By-2030-To-Address-Climate-Change-Biodiversity-Loss.jpg" />
</div>
<div class="carousel__item">
<img src="https://tr-images.condecdn.net/image/LDM0pgM40l1/crop/2040/f/gettyimages-1146431497.jpg" />
</div>
</div>
<button class="prev">
Prev
</button>
<button class="next">
Next
</button>
解决方案
您需要编写函数来显示基于startingPosition
.
showSlides
做同样的事情。它遍历所有carousel__item
并隐藏所有这些并仅显示startingPosition
位置的图片。
const items = document.getElementsByClassName("carousel__item")
let startingPosition = 0;
let totalItems = items.length;
showSlides(startingPosition);
const prevButton = document.querySelector(".prev")
const nextButton = document.querySelector(".next")
function showSlides(n) {
var i;
var slides = document.getElementsByClassName("carousel__item");
if (n > slides.length) { startingPosition = 1 }
if (n < 1) { startingPosition = slides.length }
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slides[startingPosition - 1].style.display = "block";
}
prevButton.addEventListener("click", () => {
if (startingPosition == 0) return;
startingPosition--;
showSlides(startingPosition);
}
);
nextButton.addEventListener("click", () => {
startingPosition++;
if (startingPosition == totalItems) {
startingPosition = 0;
}
showSlides(startingPosition);
});
.carousel {
max-width: 400px;
margin: 0 auto;
}
.carousel__item > img {
width: 250px;
height: 150px;
}
<div class="carousel">
<div class="carousel__item">
<img src="https://www.w3schools.com/howto/img_lights_wide.jpg" />
</div>
<div class="carousel__item">
<img src="https://tr-images.condecdn.net/image/LDM0pgM40l1/crop/2040/f/gettyimages-1146431497.jpg" />
</div>
</div>
<button class="prev">
Prev
</button>
<button class="next">
Next
</button>
推荐阅读
- javascript - What happens to other observables when rxjs.race() has been won?
- regex - 正则表达式在“/”之前返回所有字符,但如果有 2 个“/”,则在此之前返回所有字符
- android - Funtouch OS 中的 Play 服务视觉 API
- android - 对于我在广播接收器中指定的任何条件,我都看不到 toast 消息
- java - Testng && Spring上下文单元测试->测试方法前后执行sql
- ios - 使用 UserDefault 快速存储和检索数组数据
- go - 如何遍历命令行参数并收集标志后剩余的内容?
- python-3.x - Python Dataclass - 从属性名称获取元数据
- selectpdf - SelectPDF - 不使用包含的 CCS 文件进行样式设置
- excel - 如何修复 Windows 10 中 Excel VBA 的编译错误?