uniapp 如何实现匀速轮播图片 具体实现代码
时间: 2023-12-09 19:03:36 浏览: 72
实现匀速轮播图片可以通过使用 `setInterval` 方法来实现。具体实现代码如下:
```html
<template>
<div class="swiper">
<div class="swiper-wrapper" :style="{ transform: 'translateX(' + translateX + 'px)' }">
<div class="swiper-slide" v-for="(item, index) in list" :key="index">
<img :src="item" />
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
list: [
'https://xxx.com/1.jpg',
'https://xxx.com/2.jpg',
'https://xxx.com/3.jpg',
],
currentIndex: 0,
timer: null,
interval: 3000, // 间隔时间
translateX: 0,
};
},
mounted() {
this.start();
},
methods: {
start() {
if (this.timer) {
clearInterval(this.timer);
this.timer = null;
}
this.timer = setInterval(() => {
this.currentIndex++;
if (this.currentIndex >= this.list.length) {
this.currentIndex = 0;
}
this.translateX = -this.currentIndex * 100;
}, this.interval);
},
},
};
</script>
<style scoped>
.swiper {
width: 100%;
overflow: hidden;
}
.swiper-wrapper {
display: flex;
transition: transform 0.3s ease-out;
}
.swiper-slide {
width: 100%;
}
img {
width: 100%;
}
</style>
```
上述代码中,使用 `setInterval` 方法每隔一定时间改变 `currentIndex` 值,从而通过 `translateX` 属性来实现图片平移。其中 `translateX` 的值为 `-currentIndex * 100`,其中 100 为每张图片的宽度,这样可以实现图片匀速轮播。最后在 `mounted` 钩子中调用 `start` 方法启动轮播。
阅读全文