使用面向对象写一个轮播图
时间: 2023-09-11 22:07:24 浏览: 97
好的,以下是一个使用面向对象思想实现的轮播图示例:
```javascript
class Carousel {
constructor(container, slides) {
this.container = container;
this.slides = slides;
this.currentSlide = 0;
this.intervalId = null;
this.init();
}
init() {
this.render();
this.start();
}
render() {
const fragment = document.createDocumentFragment();
this.slides.forEach((slide) => {
const img = document.createElement("img");
img.src = slide;
fragment.appendChild(img);
});
this.container.appendChild(fragment);
}
start() {
this.intervalId = setInterval(() => {
this.showNextSlide();
}, 3000);
}
stop() {
clearInterval(this.intervalId);
}
showNextSlide() {
this.currentSlide = (this.currentSlide + 1) % this.slides.length;
this.container.style.transform = `translateX(-${this.currentSlide * 100}%)`;
}
}
const container = document.querySelector(".carousel");
const slides = ["slide1.jpg", "slide2.jpg", "slide3.jpg"];
const carousel = new Carousel(container, slides);
```
这个示例中,我们用 `class` 关键字定义了一个 `Carousel` 类,它包含了轮播图的状态和行为。在 `constructor` 方法中,我们接收了轮播图的容器和图片列表,并初始化了一些状态(当前图片索引、定时器 ID)。在 `init` 方法中,我们调用了两个行为方法 `render` 和 `start`。`render` 方法负责将图片列表渲染到容器中,`start` 方法则使用 `setInterval` 创建了一个定时器,以便每隔一段时间自动切换轮播图。最后,我们在 `showNextSlide` 方法中实现了图片切换逻辑,使用 `transform` 属性将轮播图容器向左移动。
在代码的最后,我们创建了一个 `Carousel` 实例,将轮播图容器和图片列表传递给构造函数即可。
阅读全文