在一个div里只能有四张图片,多的隐藏,点击左滑动,图片全部向左移一次,点击右滑动,图片全部向右移一次在vue里用v-for写
时间: 2024-04-15 18:27:02 浏览: 193
详解vue中点击空白处隐藏div的实现(用指令实现)
以下是一个使用Vue和`v-for`指令的示例,实现了在一个`<div>`中最多显示四张图片,点击左右按钮进行滑动的效果:
```html
<template>
<div>
<div class="slider-container">
<div class="slider" :style="{ transform: `translateX(${translateX}px)` }">
<div v-for="(image, index) in visibleImages" :key="index" class="slide">
<img :src="image.src" :alt="image.alt">
</div>
</div>
</div>
<button @click="slideLeft">左滑动</button>
<button @click="slideRight">右滑动</button>
</div>
</template>
<script>
export default {
data() {
return {
images: [
{ src: "image1.jpg", alt: "Image 1" },
{ src: "image2.jpg", alt: "Image 2" },
{ src: "image3.jpg", alt: "Image 3" },
{ src: "image4.jpg", alt: "Image 4" },
{ src: "image5.jpg", alt: "Image 5" },
// ...
],
translateX: 0,
currentIndex: 0,
};
},
computed: {
visibleImages() {
return this.images.slice(this.currentIndex, this.currentIndex + 4);
},
},
methods: {
slideLeft() {
if (this.currentIndex > 0) {
this.currentIndex -= 1;
this.translateX += this.slideWidth();
}
},
slideRight() {
if (this.currentIndex < this.images.length - 4) {
this.currentIndex += 1;
this.translateX -= this.slideWidth();
}
},
slideWidth() {
// 根据实际需求调整每次滑动的宽度
return 100; // 假设每张图片宽度为100px
},
},
};
</script>
<style>
.slider-container {
width: 400px; /* 根据实际需求设置宽度 */
overflow: hidden;
}
.slider {
display: flex;
transition: transform 0.3s ease; /* 添加过渡效果 */
}
.slide {
flex-shrink: 0;
}
.slide img {
width: 100%; /* 图片宽度填满容器 */
height: auto; /* 根据宽度自适应高度 */
}
</style>
```
在这个示例中,我们使用Vue的`v-for`指令遍历`visibleImages`数组,并为每个元素创建一个包含图片的`<div>`。通过计算属性`visibleImages`来动态获取当前可见的图片数组。
通过点击左滑动和右滑动按钮,我们通过更新`currentIndex`和`translateX`的值来实现图片的滑动效果。`translateX`用于设置滑动的偏移量,通过修改其值来改变图片的位置。
请根据实际需求进行适当调整样式和滑动宽度。
阅读全文