使用JS做出一个滑动轮播图并解释代码
时间: 2024-05-04 17:18:32 浏览: 9
好的,下面是一个使用 JavaScript 实现的简单滑动轮播图,代码如下:
HTML 部分:
```html
<div class="slider">
<div class="slides">
<img src="image1.jpg" alt="">
<img src="image2.jpg" alt="">
<img src="image3.jpg" alt="">
<img src="image4.jpg" alt="">
</div>
<div class="controls">
<span class="prev">❮</span>
<span class="next">❯</span>
</div>
</div>
```
CSS 部分:
```css
.slider {
position: relative;
width: 100%;
height: 400px;
overflow: hidden;
}
.slides {
display: flex;
width: 400%;
height: inherit;
transition: transform 0.6s ease-in-out;
}
.slides img {
width: 25%;
height: inherit;
}
.controls {
position: absolute;
top: 50%;
left: 0;
right: 0;
transform: translateY(-50%);
}
.controls span {
position: absolute;
font-size: 30px;
cursor: pointer;
z-index: 10;
}
.prev {
left: 20px;
}
.next {
right: 20px;
}
```
JS 部分:
```javascript
const slider = document.querySelector(".slider");
const slides = slider.querySelector(".slides");
const slideImages = slider.querySelectorAll(".slides img");
const prevBtn = slider.querySelector(".prev");
const nextBtn = slider.querySelector(".next");
let index = 0;
// 滑动到指定索引的图片
const slideTo = (index) => {
slides.style.transform = `translateX(${-index * 25}%)`;
}
// 上一张图片
const prevSlide = () => {
index--;
if (index < 0) {
index = slideImages.length - 1; // 到达第一张图片时,跳转到最后一张图片
}
slideTo(index);
}
// 下一张图片
const nextSlide = () => {
index++;
if (index >= slideImages.length) {
index = 0; // 到达最后一张图片时,跳转到第一张图片
}
slideTo(index);
}
// 点击上一张按钮
prevBtn.addEventListener("click", prevSlide);
// 点击下一张按钮
nextBtn.addEventListener("click", nextSlide);
// 自动轮播
setInterval(nextSlide, 3000);
```
这个轮播图的实现思路是通过 CSS 中的 `transform` 属性来实现滑动效果,JS 部分主要包括以下几个功能:
1. `slideTo` 函数:将轮播图滑动到指定的索引位置,其中 `index` 表示图片的索引,`slides.style.transform` 表示对 `slides` 的 `transform` 属性进行修改,`translateX` 表示水平方向的偏移量,`index * 25` 表示每次滑动的距离为一个图片的宽度,也就是 `25%`。
2. `prevSlide` 函数:将 `index` 减一,然后通过 `slideTo` 函数将轮播图滑动到指定的索引位置,当 `index` 小于 0 时,说明已经到达第一张图片,将 `index` 赋值为最后一张图片的索引。
3. `nextSlide` 函数:将 `index` 加一,然后通过 `slideTo` 函数将轮播图滑动到指定的索引位置,当 `index` 大于等于图片数量时,说明已经到达最后一张图片,将 `index` 赋值为第一张图片的索引。
4. 点击上一张按钮时,调用 `prevSlide` 函数;点击下一张按钮时,调用 `nextSlide` 函数。
5. 使用 `setInterval` 函数实现自动轮播,每隔 3 秒自动调用 `nextSlide` 函数。