我正在尝试用同一段JavaScript代码制作多个幻灯片。
下面是我的HTML代码:
<div class="slider-container">
<div class="slider">
<div class="slide">...</div>
<div class="slide">...</div>
<div class="slide">...</div>
<div class="slide">...</div>
</div>
<div class="slider">
<div class="slide">...</div>
<div class="slide">...</div>
<div class="slide">...</div>
<div class="slide">...</div>
</div>
</div>
字符串
下面是主要的CSS:
.slider-container{
width:50%;
}
.slider{
width:100%;
position:relative;
padding-bottom:75%; /* aspect-ratio 4/3 */
}
.slide{
width:100%;
position:absolute;
top:0;
left:0;
opacity:0;
transition:opacity 0.5s ease-in;
}
.slide:first-child{
opacity:1;
}
型
这里是JavaScript:
const sliderContainer = document.querySelector(".slider-container");
const slide = sliderContainer.querySelectorAll(".slide");
let currentSlide = 0;
function changeSlide() {
slide[currentSlide].style.opacity = 0;
currentSlide = (currentSlide + 1) % slide.length;
slide[currentSlide].style.opacity = 1;
}
function startSlider() {
intervalId = setInterval(changeSlide, 2000);
}
function stopSlider() {
clearInterval(intervalId);
}
startSlider();
sliderContainer.addEventListener("mouseenter", stopSlider);
sliderContainer.addEventListener("mouseleave", startSlider);
型
这个JavaScript对于一个幻灯片效果很好,但是我不能让多个幻灯片在同一个页面上工作。理想情况下,我想为所有的幻灯片保持相同的类,并且显然让回车/离开鼠标事件为每个幻灯片单独工作。有什么帮助吗?
2条答案
按热度按时间vzgqcmou1#
要在一个页面上处理具有独立行为的多个滑块,您需要更改JS代码以单独处理每个滑块。
第一种方法是将每个滑块的功能封装在一个函数中,然后为每个滑块创建示例。
下面是你的代码:
html:
字符串
JavaScript:
型
代码中的更改:
createSlider
函数接受sliderId
参数,该参数将用于标识每个滑块容器。1.在函数内部,我使用
document.getElementById
根据提供的sliderId
查找特定的滑块容器。1.其余的逻辑封装在函数中,确保每个滑块独立工作。
因此,您可以通过使用不同的
sliderId
值调用createSlider
来创建任意多个滑块。每个滑块都有自己的一组事件侦听器,并且独立于其他滑块运行。tvokkenx2#
试试这个: