单击第一个按钮,令图片先淡出,然后换成另外一个图片淡出,实现九张图片随机交替显示的效果,单击第二个按钮,页面重新加载
时间: 2024-03-01 14:54:39 浏览: 76
好的,这是一个比较常见的图片轮播效果,需要使用 JavaScript 来实现。以下是代码示例:
HTML 代码:
```html
<div class="slideshow">
<img src="image1.jpg" alt="Image 1" />
<img src="image2.jpg" alt="Image 2" />
<img src="image3.jpg" alt="Image 3" />
<img src="image4.jpg" alt="Image 4" />
<img src="image5.jpg" alt="Image 5" />
<img src="image6.jpg" alt="Image 6" />
<img src="image7.jpg" alt="Image 7" />
<img src="image8.jpg" alt="Image 8" />
<img src="image9.jpg" alt="Image 9" />
</div>
<button id="slideshowBtn">切换图片</button>
<button id="reloadBtn">重新加载</button>
```
CSS 代码:
```css
.slideshow img {
position: absolute;
top: 0;
left: 0;
opacity: 0;
transition: opacity 1s ease-in-out;
z-index: -1;
}
.slideshow img.active {
opacity: 1;
z-index: 1;
}
```
JavaScript 代码:
```javascript
// 获取元素
const slideshow = document.querySelector('.slideshow');
const slideshowBtn = document.querySelector('#slideshowBtn');
const reloadBtn = document.querySelector('#reloadBtn');
// 定义变量
let images = Array.from(slideshow.children);
let currentIndex = 0;
let intervalId;
// 初始化
images[currentIndex].classList.add('active');
// 定义函数
function showNextImage() {
// 隐藏当前图片
images[currentIndex].classList.remove('active');
// 计算下一张图片的索引
let nextIndex = Math.floor(Math.random() * images.length);
while (nextIndex === currentIndex) {
nextIndex = Math.floor(Math.random() * images.length);
}
currentIndex = nextIndex;
// 显示下一张图片
images[currentIndex].classList.add('active');
}
function startSlideshow() {
intervalId = setInterval(showNextImage, 3000);
}
function stopSlideshow() {
clearInterval(intervalId);
}
// 绑定事件
slideshowBtn.addEventListener('click', showNextImage);
reloadBtn.addEventListener('click', () => {
location.reload();
});
// 启动轮播
startSlideshow();
```
以上代码实现了两个按钮,一个是切换图片的按钮,点击后会随机显示下一张图片;另一个是重新加载的按钮,点击后会重新加载页面。图片的淡入淡出效果使用了 CSS 的 opacity 属性和过渡效果。启动轮播的函数使用了 setInterval 方法,每隔 3 秒钟就会调用 showNextImage 函数来切换图片。通过控制 currentIndex 变量来记录当前显示的图片索引,从而实现了图片的随机切换。
阅读全文