Skip to content

ImagePreview 画像プレビュー - Vant 4

🖼️ ImagePreview 画像プレビュー

🎯 概要

ImagePreview コンポーネントは画像の拡大鏡のような存在です 🔍。ユーザーに没入型の画像ブラウジング体験を提供します!コンポーネント呼び出しでも関数呼び出しでも、画像をフルスクリーンモードで華麗に表示できます。ジェスチャーによる拡大縮小、スワイプによる切り替え、カスタムコンテンツなどの豊富な機能をサポートし、すべての画像が最適な表示効果を得られるようにします!

📦 導入

以下の方法でグローバルにコンポーネントを登録します。詳細な登録方法については、コンポーネントの登録を参照してください。

js
import { createApp } from'vue'; import { ImagePreview } from'vant'; const app = createApp(); app.use(ImagePreview);

🚀 関数呼び出し

開発をより便利にするため、Vant は魔法のような補助関数のセットを提供しています!showImagePreview 関数を使用すると、まるで魔法の杖を振るように、瞬時にフルスクリーンの画像プレビューコンポーネントを呼び出すことができます。

たとえば、showImagePreview 関数を使用すると、呼び出し後にページに対応する画像プレビューコンポーネントが直接レンダリングされます。

js
import { showImagePreview } from'vant'; showImagePreview(['https://fastly.jsdelivr.net/npm/@vant/assets/apple-1.jpeg']);

🎯 コードの例

🔧 基本的な使い方

showImagePreview を呼び出すときに、直接画像の配列を渡すだけで、画像プレビューを表示できます。まるで美しいアルバムを開くように、各画像が完璧に表示されます!

js
import { showImagePreview } from'vant'; showImagePreview([ 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-1.jpeg', 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-2.jpeg', ]);

📍 初期位置の指定

特定の画像から閲覧を開始したいですか?showImagePreview は設定オブジェクトの受け渡しをサポートしており、startPosition オプションで画像の初期位置(インデックス値)を指定できます。まるでしおりのように正確に位置を特定できます!

js
import { showImagePreview } from'vant'; showImagePreview({ images: [ 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-1.jpeg', 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-2.jpeg', ], startPosition: 1, });

✨ 閉じるボタンの表示

closeable オプションを有効にすると、ポップアップの右上隅に閉じるアイコンが表示され、ユーザーに親切な退出ボタンが提供されます!さらに、close-icon 属性でアイコンのスタイルをカスタマイズしたり、close-icon-position 属性でアイコンの位置を調整したりすることで、インターフェースをデザイン理念に合わせることができます。

js
import { showImagePreview } from'vant'; showImagePreview({ images: [ 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-1.jpeg', 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-2.jpeg', ], closeable: true, });

👂 閉じるイベントの監視

onClose オプションで画像プレビューの閉じるイベントを監視すると、アプリに鋭い「耳」を装着したように、ユーザーの操作に即座に反応できます!

js
import { showToast, showImagePreview } from'vant'; showImagePreview({ images: [ 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-1.jpeg', 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-2.jpeg', ], onClose() { showToast('閉じます'); }, });

⏰ 非同期での閉じる

beforeClose 属性でコールバック関数を渡すと、画像プレビューが閉じる前に特定の操作を実行できます。これは閉じる操作に「セキュリティゲート」を追加するようなもので、閉じるタイミングを完全に制御できます!

js
import { showImagePreview } from'vant'; const instance = showImagePreview({ images: [ 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-1.jpeg', 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-2.jpeg', ], beforeClose: () =>false, }); setTimeout(() => { // インスタンスの close メソッドを呼び出して手動で画像プレビューを閉じる instance.close(); }, 2000);

🎨 ImagePreview コンポーネントの使用

ImagePreview にコンポーネントやその他のカスタムコンテンツを埋め込む必要がある場合は、ImagePreview コンポーネントを直接使用し、index スロットを使用してカスタマイズできます。これは画像プレビューにカスタムの「衣装」を着せるようなもので、機能をより多彩にすることができます!使用前に app.use などの方法でコンポーネントを登録する必要があります。

html
js
import { ref } from'vue'; exportdefault { setup() { const show = ref(false); const index = ref(0); const images = [ 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-1.jpeg', 'https://fastly.jsdelivr.net/npm/@vant/assets/apple-2.jpeg', ]; constonChange = (newIndex) => { index.value = newIndex; }; return { show, index, images, onChange, }; }, };

🎬 image スロットの使用

コンポーネント呼び出しの方法で ImagePreview を使用する場合は、image スロットを通じてカスタムコンテンツを挿入できます。例えば、ビデオコンテンツを表示することができます。これはプレビューアに「トランスフォーマー」の能力を装備するようなもので、画像だけでなくビデオも再生できるようになります!この例では、close-on-click-image 属性を false に設定すると、ビデオをクリックしたときに誤ってプレビューが閉じることを防ぐことができます。

html
js
import { ref } from'vue'; exportdefault { setup() { const show = ref(false); const images = [ 'https://www.w3school.com.cn/i/movie.ogg', 'https://www.w3school.com.cn/i/movie.ogg', 'https://www.w3school.com.cn/i/movie.ogg', ]; return { show, images, }; }, };

image スロットを使用して画像をカスタマイズする場合、スロットのパラメータを使用して style スタイルと onLoad コールバック関数をバインドできます。これにより、\<img> タグが画像の拡大縮小をサポートできるようになります。まるで画像にスマートな「脳」を装着したかのように、様々な表示ニーズに適応できるようになります!

html

API

メソッド

Vant では以下の ImagePreview に関する補助関数がエクスポートされています:

メソッド名説明パラメータ戻り値
showImagePreviewフルスクリーンの画像プレビューコンポーネントを表示するstring[] | ImagePreviewOptionsImagePreview インスタンス

ImagePreviewOptions

showImagePreview メソッドを呼び出すときに、以下のオプションを渡すことができます:

パラメータ名説明デフォルト値
imagesプレビューする画像の URL 配列string[][]
startPosition画像プレビューの開始位置のインデックスnumber | string0
swipeDurationアニメーションの期間(単位:msnumber | string300
showIndexページ番号を表示するかどうかbooleantrue
showIndicatorsスライドインジケータを表示するかどうかbooleanfalse
loopループ再生を有効にするかどうかbooleantrue
doubleScale v4.7.2ダブルタップによる拡大縮小を有効にするかどうか。無効にすると、クリック時に即座に画像プレビューが閉じますbooleantrue
onClose閉じるときのコールバック関数Function-
onChange画像を切り替えるときのコールバック関数。コールバックパラメータは現在のインデックスFunction-
onScale画像を拡大縮小するときのコールバック関数。コールバックパラメータは現在のインデックスと現在の拡大縮小値からなるオブジェクトFunction-
beforeClose閉じる前のコールバック関数。false を返すと閉じるのを阻止できます。Promise の返却もサポート(active: number) => boolean | Promise<boolean>-
closeOnPopstateページが戻るときに自動的に閉じるかどうかbooleantrue
closeOnClickImage v4.8.3画像をクリックした後に画像プレビューを閉じるかどうかbooleantrue
closeOnClickOverlay v4.6.4マスクレイヤーをクリックした後に画像プレビューを閉じるかどうかbooleantrue
vertical v4.8.6縦方向のジェスチャースワイプを有効にするかどうかbooleanfalse
classNameカスタムクラス名 (画像プレビューのポップアップに適用)string | Array | object-
maxZoomジェスチャーによる拡大縮小の最大倍率number | string3
minZoomジェスチャーによる拡大縮小の最小倍率number | string1/3
closeable閉じるアイコンを表示するかどうかbooleanfalse
closeIcon閉じるアイコンの名前または画像リンクstringclear
closeIconPosition閉じるアイコンの位置。top-leftbottom-leftbottom-right から選択可能stringtop-right
transitionアニメーションのクラス名。transitionname 属性と同等stringvan-fade

| overlayClass | カスタムマスクレイヤークラス名 | string | Array | object | - | | overlayStyle | カスタムマスクレイヤースタイル | object | - | | teleport | 指定挂载的节点,等同于 Teleport 组件的 to 属性 | string | Element | - |

Props

コンポーネント呼び出しで ImagePreview を使用する場合、以下の Props がサポートされます:

パラメータ説明デフォルト値
v-model:show画像プレビューを表示するかどうかbooleanfalse
imagesプレビューする画像の URL 配列string[][]
start-position画像プレビューの開始位置のインデックスnumber | string0
swipe-durationアニメーションの期間(単位:ms)number | string300
show-indexページ番号を表示するかどうかbooleantrue
show-indicatorsスライドインジケータを表示するかどうかbooleanfalse
loopループ再生を有効にするかどうかbooleantrue
double-scale v4.7.2ダブルタップによる拡大縮小を有効にするかどうか。無効にすると、クリック時に即座に画像プレビューが閉じますbooleantrue
before-close閉じる前のコールバック関数。false を返すと閉じるのを阻止できます。Promise の返却もサポート(active: number) => boolean | Promise<boolean>-
close-on-popstateページが戻るときに自動的に閉じるかどうかbooleantrue
close-on-click-image v4.8.3画像をクリックした後に画像プレビューを閉じるかどうかbooleantrue
close-on-click-overlay v4.6.4マスクレイヤーをクリックした後に画像プレビューを閉じるかどうかbooleantrue
vertical v4.8.6縦方向のジェスチャースワイプを有効にするかどうかbooleanfalse
class-nameカスタムクラス名string | Array | object-
max-zoomジェスチャーによる拡大縮小の最大倍率number | string3
min-zoomジェスチャーによる拡大縮小の最小倍率number | string1/3
closeable閉じるアイコンを表示するかどうかbooleanfalse
close-icon閉じるアイコンの名前または画像リンクstringclear
close-icon-position閉じるアイコンの位置。top-leftbottom-leftbottom-right から選択可能stringtop-right
transitionアニメーションのクラス名。transitionname 属性と同等stringvan-fade

| overlay-class | カスタムマスクレイヤークラス名 | string | Array | object | - | | overlay-style | カスタムマスクレイヤースタイル | object | - | | teleport | 指定挂载的节点,等同于 Teleport 组件的 to 属性 | string | Element | - |

Events

コンポーネント呼び出しで ImagePreview を使用する場合、以下のイベントがサポートされます:

イベント名説明コールバックパラメータ
close閉じるときにトリガーされます{ index: number, url: string }
closed閉じてアニメーションが終了した後にトリガーされます-
change現在の画像を切り替えるときにトリガーされますindex: number
scale現在の画像を拡大縮小するときにトリガーされます{ index: number, scale: number }
long-press現在の画像を長押ししたときにトリガーされます{ index: number }

メソッド

コンポーネント呼び出しで ImagePreview を使用する場合、ref を使用して ImagePreview インスタンスを取得し、インスタンスメソッドを呼び出すことができます。詳細については、コンポーネントインスタンスメソッドを参照してください。

メソッド名説明パラメータ戻り値
resetScale 4.7.4現在の画像の拡大縮小率をリセットします--
swipeTo指定位置に切り替えますindex: number, options?: SwipeToOptions-

型定義

コンポーネントは以下の型定義をエクスポートしています:

ts
importtype { ImagePreviewProps, ImagePreviewOptions, ImagePreviewInstance, ImagePreviewScaleEventParams, } from'vant';

ImagePreviewInstance はコンポーネントインスタンスの型で、次のように使用します:

ts
import { ref } from'vue'; importtype { ImagePreviewInstance } from'vant'; const imagePreviewRef = ref<ImagePreviewInstance>(); imagePreviewRef.value?.swipeTo(1);

Slots

コンポーネント呼び出しで ImagePreview を使用する場合、以下のスロットがサポートされます:

名前説明パラメータ
indexページ番号のカスタムコンテンツ{ index: 現在の画像のインデックス }
cover画像プレビューの上にカバーするカスタムコンテンツ-
imageカスタム画像コンテンツ{ src: 現在のリソースアドレス, onLoad: 画像読み込み関数, style: 現在の画像スタイル }

onClose コールバックパラメータ

パラメータ名説明
url現在の画像 URLstring
index現在の画像のインデックス値number

onScale コールバックパラメータ

パラメータ名説明
index現在の画像のインデックス値number
scale現在の画像の拡大縮小値number

テーマカスタマイズ

スタイル変数

コンポーネントは、カスタムスタイルに使用できる以下の CSS 変数を提供しています。使用方法については、ConfigProvider コンポーネントを参照してください。

名前デフォルト値説明
--van-image-preview-index-text-colorvar(--van-white)-
--van-image-preview-index-font-sizevar(--van-font-size-md)-
--van-image-preview-index-line-heightvar(--van-line-height-md)-
--van-image-preview-index-text-shadow0 1px 1px var(--van-gray-8)-
--van-image-preview-overlay-backgroundrgba(0, 0, 0, 0.9)-
--van-image-preview-close-icon-size22px-
--van-image-preview-close-icon-colorvar(--van-gray-5)-
--van-image-preview-close-icon-marginvar(--van-padding-md)-
--van-image-preview-close-icon-z-index1-

よくある質問

デスクトップでコンポーネントを操作できませんか?

デスクトップ対応を参照してください。

showImagePreview を参照するとコンパイルエラーが発生しますか?

showImagePreview メソッドを参照すると次のエラーが発生する場合、プロジェクトで babel-plugin-import プラグインが使用されているため、コードが誤ってコンパイルされています。

bash
These dependencies were not found: * vant/es/show-image-preview in ./src/xxx.js * vant/es/show-image-preview/style in ./src/xxx.js

Vant は 4.0 バージョンから babel-plugin-import プラグインをサポートしなくなりました。移行ガイドを参照して、このプラグインを削除してください。

📚 関連文書

🖼️ メディアコンポーネント

  • Image 画像 - 画像コンポーネント、画像プレビューとの完璧な組み合わせ
  • Swipe スライダー - スライダーコンポーネント、画像切り替えの中核機能を提供

🎨 インタラクティブコンポーネント

🎯 フィードバックコンポーネント

  • Toast トースト - トーストコンポーネント、画像プレビューと組み合わせて使用
  • Loading ローディング - ローディングコンポーネント、画像読み込み時のフレンドリーな通知

🛠️ 開発ガイド

📱 モバイル対応

Vant に基づく企業向けモバイルソリューション