-

引入

ImagePreview和其他组件不同,不是通过HTML结构的方式来使用,而是通过函数调用的方式。使用前需要先引入它。

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

Vue.use(ImagePreview);

代码演示

基础用法

直接传入图片数组,即可展示图片预览

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

传入配置项

通过传入配置对象,可以指定初始图片的位置、监听关闭事件

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

异步关闭

通过asyncClose属性可以开启异步关闭,开启后异步关闭后,只能通过实例上的 close 方法关闭图片预览

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

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

组件调用

如果需要在图片预览内嵌入组件或其他自定义内容,可以使用组件调用的方式,调用前需要通过 Vue.use 注册组件

<van-image-preview v-model="show" :images="images" @change="onChange">
  <template v-slot:index>第{{ index }}页</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

通过函数调用 ImagePreview 时,支持传入以下选项:

参数名说明类型默认值
images需要预览的图片 URL 数组string[][]
startPosition图片预览起始位置索引number | string0
swipeDuration动画时长,单位为msnumber | string500
showIndex是否显示页码booleantrue
showIndicators是否显示轮播指示器booleanfalse
loop是否开启循环播放booleantrue
onClose关闭时的回调函数Function-
onChange v2.0.3切换图片时的回调函数,回调参数为当前索引Function-
asyncClose是否开启异步关闭booleanfalse
closeOnPopstate是否在页面回退时自动关闭booleanfalse
className自定义类名any-
lazyLoad是否开启图片懒加载,须配合 Lazyload 组件使用booleanfalse
maxZoom手势缩放时,最大缩放比例number | string3
minZoom手势缩放时,最小缩放比例number | string1/3

Props

通过组件调用 ImagePreview 时,支持以下 Props:

参数说明类型默认值
images需要预览的图片 URL 数组string[][]
start-position图片预览起始位置索引number | string0
swipe-duration动画时长,单位为 msnumber | string500
show-index是否显示页码booleantrue
show-indicators是否显示轮播指示器booleanfalse
loop是否开启循环播放booleantrue
async-close是否开启异步关闭booleanfalse
close-on-popstate是否在页面回退时自动关闭booleanfalse
class-name自定义类名any-
lazy-load是否开启图片懒加载,须配合 Lazyload 组件使用booleanfalse
max-zoom手势缩放时,最大缩放比例number | string3
min-zoom手势缩放时,最小缩放比例number | string1/3

Events

通过组件调用 ImagePreview 时,支持以下事件:

事件说明回调参数
close关闭时触发{ index: 索引, url: 图片链接 }
change切换当前图片时触发index, 当前图片的索引

Slots

通过组件调用 ImagePreview 时,支持以下插槽:

名称说明
index自定义页码内容
cover自定义覆盖在图片预览上方的内容

onClose 回调参数

参数名说明类型
url当前图片 URLstring
index当前图片的索引值number

常见问题

在桌面端无法操作组件?

参见在桌面端使用


实例演示