vue3的插入图片的轮播图怎么写
时间: 2024-02-22 07:55:50 浏览: 155
Vue封装Swiper实现图片轮播效果
如果您需要在Vue3的轮播图中插入图片,可以在轮播项中使用`img`标签,并将图片路径作为`src`属性的值。以下是一个示例:
```html
<template>
<div class="slider-container">
<ul class="slider-list" :style="{ transform: 'translateX(' + translateX + 'px)' }">
<li v-for="(item, index) in sliderItems" :key="index" class="slider-item">
<img :src="item.src" :alt="item.alt">
</li>
</ul>
</div>
</template>
<script>
import { ref, watch, nextTick } from 'vue'
export default {
setup() {
const sliderItems = ref([
{ src: 'path/to/image1.jpg', alt: 'image1' },
{ src: 'path/to/image2.jpg', alt: 'image2' },
{ src: 'path/to/image3.jpg', alt: 'image3' },
{ src: 'path/to/image4.jpg', alt: 'image4' }
]) // 轮播项
const currentIndex = ref(0) // 当前轮播项的索引
const translateX = ref(0) // 轮播项的偏移量
// 轮播动画
const slide = (nextIndex) => {
if (nextIndex < 0 || nextIndex >= sliderItems.value.length) {
return
}
const sliderWidth = document.querySelector('.slider-container').clientWidth // 轮播容器宽度
translateX.value = -(nextIndex * sliderWidth) // 计算偏移量
currentIndex.value = nextIndex // 更新当前索引
}
// 自动轮播
const autoSlide = () => {
setInterval(() => {
const nextIndex = (currentIndex.value + 1) % sliderItems.value.length
slide(nextIndex)
}, 3000)
}
// 监听currentIndex的变化,实现轮播效果
watch(currentIndex, (newValue, oldValue) => {
const sliderWidth = document.querySelector('.slider-container').clientWidth // 轮播容器宽度
const distance = (newValue - oldValue) * sliderWidth
nextTick(() => {
document.querySelector('.slider-list').style.transition = 'transform .5s linear'
translateX.value -= distance
// 监听transition动画结束事件
document.querySelector('.slider-list').addEventListener('transitionend', () => {
document.querySelector('.slider-list').style.transition = ''
if (currentIndex.value >= sliderItems.value.length) { // 处理循环轮播
translateX.value = 0
currentIndex.value = 0
}
})
})
})
autoSlide()
return {
sliderItems,
currentIndex,
translateX
}
}
}
</script>
<style>
.slider-container {
width: 100%;
overflow: hidden;
}
.slider-list {
display: flex;
transition: transform .5s linear;
}
.slider-item {
flex: 1;
height: 200px;
text-align: center;
}
.slider-item img {
max-width: 100%;
max-height: 100%;
vertical-align: middle;
}
</style>
```
这个示例中,轮播项是一个包含图片路径和图片描述的对象数组,图片路径作为`img`标签的`src`属性值,图片描述作为`img`标签的`alt`属性值。CSS样式中对`img`标签进行了一些基本设置,以适应不同尺寸的图片。
阅读全文