Vant ImagePreview 圖片預(yù)覽

2022-05-31 13:35 更新

引入

ImagePreview和其他組件不同,不是通過(guò)HTML結(jié)構(gòu)的方式來(lái)使用,而是通過(guò)函數(shù)調(diào)用的方式。使用前需要先引入它。

import Vue from 'vue';
import { ImagePreview } from 'vant';

Vue.use(ImagePreview);

代碼演示

基礎(chǔ)用法

直接傳入圖片數(shù)組,即可展示圖片預(yù)覽

ImagePreview([
  'https://img.yzcdn.cn/1.jpg',
  'https://img.yzcdn.cn/2.jpg'
]);

傳入配置項(xiàng)

通過(guò)傳入配置對(duì)象,可以指定初始圖片的位置、監(jiān)聽(tīng)關(guān)閉事件

ImagePreview({
  images: [
    'https://img.yzcdn.cn/1.jpg',
    'https://img.yzcdn.cn/2.jpg'
  ],
  startPosition: 1,
  onClose() {
    // do something
  }
});

異步關(guān)閉

通過(guò)asyncClose屬性可以開(kāi)啟異步關(guān)閉,開(kāi)啟后異步關(guān)閉后,只能通過(guò)實(shí)例上的 close 方法關(guān)閉圖片預(yù)覽

const instance = ImagePreview({
  images: [
    'https://img.yzcdn.cn/1.jpg',
    'https://img.yzcdn.cn/2.jpg'
  ],
  asyncClose: true
});

setTimeout(() => {
  instance.close();
}, 1000);

組件調(diào)用

如果需要在圖片預(yù)覽內(nèi)嵌入組件或其他自定義內(nèi)容,可以使用組件調(diào)用的方式,調(diào)用前需要通過(guò) Vue.use 注冊(cè)組件

<van-image-preview v-model="show" :images="images" @change="onChange">
  <template v-slot:index>第{{ index }}頁(yè)</template>
</van-image-preview>
export default {
  data() {
    return {
      show: false,
      index: 0,
      images: [
        'https://img.yzcdn.cn/1.jpg',
        'https://img.yzcdn.cn/2.jpg'
      ]
    };
  },

  methods: {
    onChange(index) {
      this.index = index;
    }
  }
}

API

Options

通過(guò)函數(shù)調(diào)用 ImagePreview 時(shí),支持傳入以下選項(xiàng):

參數(shù)名說(shuō)明類型默認(rèn)值
images需要預(yù)覽的圖片 URL 數(shù)組string[][]
startPosition圖片預(yù)覽起始位置索引number | string0
swipeDuration動(dòng)畫(huà)時(shí)長(zhǎng),單位為msnumber | string500
showIndex是否顯示頁(yè)碼booleantrue
showIndicators是否顯示輪播指示器booleanfalse
loop是否開(kāi)啟循環(huán)播放booleantrue
onClose關(guān)閉時(shí)的回調(diào)函數(shù)Function-
onChange v2.0.3切換圖片時(shí)的回調(diào)函數(shù),回調(diào)參數(shù)為當(dāng)前索引Function-
asyncClose是否開(kāi)啟異步關(guān)閉booleanfalse
closeOnPopstate是否在頁(yè)面回退時(shí)自動(dòng)關(guān)閉booleanfalse
className自定義類名any-
lazyLoad是否開(kāi)啟圖片懶加載,須配合 Lazyload 組件使用booleanfalse
maxZoom手勢(shì)縮放時(shí),最大縮放比例number | string3
minZoom手勢(shì)縮放時(shí),最小縮放比例number | string1/3

Props

通過(guò)組件調(diào)用 ImagePreview 時(shí),支持以下 Props:

參數(shù)說(shuō)明類型默認(rèn)值
images需要預(yù)覽的圖片 URL 數(shù)組string[][]
start-position圖片預(yù)覽起始位置索引number | string0
swipe-duration動(dòng)畫(huà)時(shí)長(zhǎng),單位為 msnumber | string500
show-index是否顯示頁(yè)碼booleantrue
show-indicators是否顯示輪播指示器booleanfalse
loop是否開(kāi)啟循環(huán)播放booleantrue
async-close是否開(kāi)啟異步關(guān)閉booleanfalse
close-on-popstate是否在頁(yè)面回退時(shí)自動(dòng)關(guān)閉booleanfalse
class-name自定義類名any-
lazy-load是否開(kāi)啟圖片懶加載,須配合 Lazyload 組件使用booleanfalse
max-zoom手勢(shì)縮放時(shí),最大縮放比例number | string3
min-zoom手勢(shì)縮放時(shí),最小縮放比例number | string1/3

Events

通過(guò)組件調(diào)用 ImagePreview 時(shí),支持以下事件:

事件說(shuō)明回調(diào)參數(shù)
close關(guān)閉時(shí)觸發(fā){ index: 索引, url: 圖片鏈接 }
change切換當(dāng)前圖片時(shí)觸發(fā)index, 當(dāng)前圖片的索引

Slots

通過(guò)組件調(diào)用 ImagePreview 時(shí),支持以下插槽:

名稱說(shuō)明
index自定義頁(yè)碼內(nèi)容
cover自定義覆蓋在圖片預(yù)覽上方的內(nèi)容

onClose 回調(diào)參數(shù)

參數(shù)名說(shuō)明類型
url當(dāng)前圖片 URLstring
index當(dāng)前圖片的索引值number

常見(jiàn)問(wèn)題

在桌面端無(wú)法操作組件?

參見(jiàn)在桌面端使用。


實(shí)例演示

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)