ImagePreview組件調用,images需要傳入圖片數組,當前的需求ImagePreview不需要輪播,只需要顯示點擊的輪播圖的單張圖。
1/main.js文件中,引入和注冊vant
import Vant from "vant"; Vue.use(Vant); //圖片懶加載配置項 import { Lazyload } from "vant"; Vue.use(Lazyload, { lazyComponent: true, });
2/ vue文件中,頁面結構
<template>
<div class="detail_contant">
<van-swipe :autoplay='3000' @change="onChangeImg" >
<van-swipe-item v-for="(image, index) in images" :key="index" @click="showImagePreview" >
<img v-lazy="image" alt="圖片未顯示"/>
</van-swipe-item>
</van-swipe>
<van-image-preview
v-model="ImagePreviewShow"
:images="imagesLists"
>
</van-image-preview>
</div>
</template>
<script>
export default {
data(){
return{
images: [
require('@/assets/banner_3@2x.png'),
require('@/assets/banner_4@2x.png'),
require('@/assets/banner_5@2x.png'),
require('@/assets/banner_1@2x.png'),
require('@/assets/banner_2@2x.png'),
],
ImagePreviewShow: false,
index: 0,
imagesLists: [],
imgIndex:0,
}
},
mounted(){
},
methods: {
//得到圖片索引值
onChangeImg(index) {
this.index = index;
},
//顯示預覽圖
showImagePreview(){
this.imgIndex = this.index;
this.ImagePreviewShow = true;
this.imagesLists = this.images.map((item)=>{
return item; }) this.imagesLists = this.imagesLists.filter((item,index ) =>{ return index == this.imgIndex ; })
}, }, } </script> <style lang="scss" scoped> .detail_contant{ .van-swipe{ width: 100%; .van-swipe-item { height: 100%; color: #fff; font-size: 20px; height: 6.16rem; text-align: center; vertical-align: middle; img{ width: 100%; height: 100%; } } /deep/ .van-swipe__indicators{ bottom:.27rem; /deep/ .van-swipe__indicator{ width: .25rem; height:.25rem; background: #e9e3d8; opacity: 1; &:not(:last-child){ margin-right:.26rem; } &.van-swipe__indicator--active{ background: #f78927; opacity: 1; } } } } .van-image-preview{ /deep/ .van-image-preview__index{ display: none; } } } </style>
