使用vant的Swipe 輪播van-swipe 和ImagePreview 圖片預覽van-image-preview 和Lazyload 懶加載 實現點擊哪張輪播圖,哪張圖預覽


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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM