jQuery 单独设置每张幻灯片图片的停留时间 鼠标悬停 完整代码
时间: 2023-05-29 16:04:08 浏览: 132
jQuery鼠标悬停效果
以下是实现 jQuery 单独设置每张幻灯片图片的停留时间,以及鼠标悬停暂停功能的完整代码:
HTML 代码:
```
<div class="slideshow">
<div class="slide">
<img src="image1.jpg" data-time="5000">
</div>
<div class="slide">
<img src="image2.jpg" data-time="3000">
</div>
<div class="slide">
<img src="image3.jpg" data-time="7000">
</div>
</div>
```
CSS 代码:
```
.slideshow {
position: relative;
}
.slide {
position: absolute;
top: 0;
left: 0;
opacity: 0;
transition: opacity 1s ease-in-out;
}
.slide.active {
opacity: 1;
}
```
jQuery 代码:
```
$(document).ready(function() {
var slides = $('.slideshow .slide');
var currentSlide = 0;
var slideshowInterval;
// 设置第一张幻灯片为 active
slides.eq(currentSlide).addClass('active');
// 自动播放幻灯片
function autoplaySlideshow() {
slideshowInterval = setInterval(function() {
// 移除当前幻灯片的 active 类,使其淡出
slides.eq(currentSlide).removeClass('active');
// 计算下一个幻灯片的索引
currentSlide = (currentSlide + 1) % slides.length;
// 给下一个幻灯片添加 active 类,使其淡入
slides.eq(currentSlide).addClass('active');
// 获取下一个幻灯片的停留时间
var slideTime = slides.eq(currentSlide).find('img').data('time');
// 重置自动播放的时间
clearInterval(slideshowInterval);
slideshowInterval = setInterval(autoplaySlideshow, slideTime);
}, 1000);
}
// 开始自动播放幻灯片
autoplaySlideshow();
// 鼠标悬停暂停自动播放
$('.slideshow').hover(function() {
clearInterval(slideshowInterval);
}, function() {
autoplaySlideshow();
});
});
```
解释:
1. 首先我们定义了一个 `.slideshow` 容器,里面包含了多个 `.slide` 幻灯片。每个幻灯片里面包含了一张图片和一个 `data-time` 属性,用于设置该幻灯片图片的停留时间。
2. 我们使用 CSS 把每张幻灯片定位到容器的左上角,并设置其初始透明度为 0,用过渡效果实现幻灯片的淡入淡出。
3. 在 jQuery 代码中,我们首先获取所有幻灯片和当前幻灯片的索引,并将第一张幻灯片设置为 active。
4. 然后编写了一个 `autoplaySlideshow` 函数,用于自动播放幻灯片。该函数会移除当前幻灯片的 active 类,计算下一个幻灯片的索引,给下一个幻灯片添加 active 类,并获取下一个幻灯片的停留时间。最后,使用 `setInterval` 方法设置下一个幻灯片的停留时间,并将其赋值给 `slideshowInterval` 变量,以便在鼠标悬停时清除该定时器。
5. 最后,我们调用 `autoplaySlideshow` 函数开始自动播放幻灯片,并在 `.slideshow` 容器上添加了鼠标悬停和离开的事件,以便在鼠标悬停时暂停自动播放,在离开时恢复自动播放。
阅读全文