圖片放大預覽,支持函數(shù)調(diào)用和組件調(diào)用兩種方式。
ImagePreview 是一個函數(shù),調(diào)用函數(shù)后會直接在頁面中展示圖片預覽界面。
import { ImagePreview } from 'vant';
ImagePreview(['https://img01.yzcdn.cn/vant/apple-1.jpg']);
通過組件調(diào)用 ImagePreview 時,可以通過下面的方式進行注冊。
import Vue from 'vue';
import { ImagePreview } from 'vant';
// 全局注冊
Vue.use(ImagePreview);
// 局部注冊
export default {
components: {
[ImagePreview.Component.name]: ImagePreview.Component,
},
};
直接傳入圖片數(shù)組,即可展示圖片預覽。
ImagePreview([
'https://img01.yzcdn.cn/vant/apple-1.jpg',
'https://img01.yzcdn.cn/vant/apple-2.jpg',
]);
ImagePreview 支持傳入配置對象,并通過 startPosition
選項指定圖片的初始位置(索引值)。
ImagePreview({
images: [
'https://img01.yzcdn.cn/vant/apple-1.jpg',
'https://img01.yzcdn.cn/vant/apple-2.jpg',
],
startPosition: 1,
});
設置 closeable
屬性后,會在彈出層的右上角顯示關閉圖標,并且可以通過 close-icon
屬性自定義圖標,使用close-icon-position
屬性可以自定義圖標位置。
ImagePreview({
images: [
'https://img01.yzcdn.cn/vant/apple-1.jpg',
'https://img01.yzcdn.cn/vant/apple-2.jpg',
],
closeable: true,
});
通過 onClose
選項監(jiān)聽圖片預覽的關閉事件。
import { Toast } from 'vant';
ImagePreview({
images: [
'https://img01.yzcdn.cn/vant/apple-1.jpg',
'https://img01.yzcdn.cn/vant/apple-2.jpg',
],
onClose() {
Toast('關閉');
},
});
通過 asyncClose
屬性可以開啟異步關閉,開啟后異步關閉后,只能通過實例上的 close 方法關閉圖片預覽。
const instance = ImagePreview({
images: [
'https://img01.yzcdn.cn/vant/apple-1.jpg',
'https://img01.yzcdn.cn/vant/apple-2.jpg',
],
asyncClose: true,
});
setTimeout(() => {
instance.close();
}, 2000);
如果需要在圖片預覽內(nèi)嵌入組件或其他自定義內(nèi)容,可以使用組件調(diào)用的方式,調(diào)用前需要通過 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://img01.yzcdn.cn/vant/apple-1.jpg',
'https://img01.yzcdn.cn/vant/apple-2.jpg',
],
};
},
methods: {
onChange(index) {
this.index = index;
},
},
};
通過函數(shù)調(diào)用 ImagePreview
時,支持傳入以下選項:
參數(shù)名 | 說明 | 類型 | 默認值 |
---|---|---|---|
images | 需要預覽的圖片 URL 數(shù)組 | string[] | []
|
startPosition | 圖片預覽起始位置索引 | number | string | 0
|
swipeDuration | 動畫時長,單位為ms
|
number | string | 300
|
showIndex | 是否顯示頁碼 | boolean | true
|
showIndicators | 是否顯示輪播指示器 | boolean | false
|
loop | 是否開啟循環(huán)播放 | boolean | true
|
onClose | 關閉時的回調(diào)函數(shù) | Function | - |
onChange | 切換圖片時的回調(diào)函數(shù),回調(diào)參數(shù)為當前索引 | Function | - |
onScale | 縮放圖片時的回調(diào)函數(shù),回調(diào)參數(shù)為當前索引和當前縮放值組成的對象 | Function | - |
asyncClose | 是否開啟異步關閉 | boolean | false
|
closeOnPopstate | 是否在頁面回退時自動關閉 | boolean | true
|
className | 自定義類名 | any | - |
maxZoom | 手勢縮放時,最大縮放比例 | number | string | 3
|
minZoom | 手勢縮放時,最小縮放比例 | number | string | 1/3
|
closeable v2.5.0
|
是否顯示關閉圖標 | boolean | false
|
closeIcon v2.5.0
|
關閉圖標名稱或圖片鏈接 | string | clear
|
closeIconPosition v2.5.0
|
關閉圖標位置,可選值為top-left
bottom-left bottom-right
|
string | top-right
|
transition v2.12.8
|
動畫類名,等價于 transition 的 name 屬性 |
string | van-fade
|
overlayStyle v2.12.37
|
自定義遮罩層樣式 | object | - |
getContainer | 指定掛載的節(jié)點,用法示例 | string | () => Element | - |
通過組件調(diào)用 ImagePreview
時,支持以下 Props:
參數(shù) | 說明 | 類型 | 默認值 |
---|---|---|---|
images | 需要預覽的圖片 URL 數(shù)組 | string[] | []
|
start-position | 圖片預覽起始位置索引 | number | string | 0
|
swipe-duration | 動畫時長,單位為 ms | number | string | 300
|
show-index | 是否顯示頁碼 | boolean | true
|
show-indicators | 是否顯示輪播指示器 | boolean | false
|
loop | 是否開啟循環(huán)播放 | boolean | true
|
async-close | 是否開啟異步關閉 | boolean | false
|
close-on-popstate | 是否在頁面回退時自動關閉 | boolean | true
|
class-name | 自定義類名 | any | - |
max-zoom | 手勢縮放時,最大縮放比例 | number | string | 3
|
min-zoom | 手勢縮放時,最小縮放比例 | number | string | 1/3
|
closeable v2.5.0
|
是否顯示關閉圖標 | boolean | false
|
close-icon v2.5.0
|
關閉圖標名稱或圖片鏈接 | string | clear
|
close-icon-position v2.5.0
|
關閉圖標位置,可選值為top-left
bottom-left bottom-right
|
string | top-right
|
transition v2.12.8
|
動畫類名,等價于 transition 的 name 屬性 |
string | van-fade
|
overlay-style v2.12.37
|
自定義遮罩層樣式 | object | - |
get-container | 指定掛載的節(jié)點,用法示例 | string | () => Element | - |
通過組件調(diào)用 ImagePreview
時,支持以下事件:
事件 | 說明 | 回調(diào)參數(shù) |
---|---|---|
close | 關閉時觸發(fā) | { index: 索引, url: 圖片鏈接 } |
closed v2.5.6
|
關閉且且動畫結束后觸發(fā) | - |
change | 切換當前圖片時觸發(fā) | index: 當前圖片的索引 |
scale v2.5.0
|
縮放當前圖片時觸發(fā) | { index: 當前圖片的索引, scale: 當前縮放的值 } |
通過組件調(diào)用 ImagePreview
時,通過 ref 可以獲取到 ImagePreview 實例并調(diào)用實例方法,詳見組件實例方法。
方法名 | 說明 | 參數(shù) | 返回值 |
---|---|---|---|
swipeTo 2.9.0
|
切換到指定位置 | index: number, options: Options | - |
通過組件調(diào)用 ImagePreview
時,支持以下插槽:
名稱 | 說明 | 參數(shù) |
---|---|---|
index | 自定義頁碼內(nèi)容 | { index: 當前圖片的索引 } |
cover | 自定義覆蓋在圖片預覽上方的內(nèi)容 | - |
參數(shù)名 | 說明 | 類型 |
---|---|---|
url | 當前圖片 URL | string |
index | 當前圖片的索引值 | number |
參數(shù)名 | 說明 | 類型 |
---|---|---|
index | 當前圖片的索引值 | number |
scale | 當前圖片的縮放值 | number |
組件提供了下列 Less 變量,可用于自定義樣式,使用方法請參考主題定制。
名稱 | 默認值 | 描述 |
---|---|---|
@image-preview-index-text-color | @white
|
- |
@image-preview-index-font-size | @font-size-md
|
- |
@image-preview-index-line-height | @line-height-md
|
- |
@image-preview-index-text-shadow | 0 1px 1px @gray-8
|
- |
@image-preview-overlay-background-color | rgba(0, 0, 0, 0.9)
|
- |
@image-preview-close-icon-size | 22px
|
- |
@image-preview-close-icon-color | @gray-5
|
- |
@image-preview-close-icon-active-color | @gray-6
|
- |
@image-preview-close-icon-margin | @padding-md
|
- |
@image-preview-close-icon-z-index | 1
|
- |
參見桌面端適配。
更多建議: