すべてのコンポーネント

MotionZoom

画像がその場から全画面へ拡大し、ドラッグして払うと閉じます。

WebReact Nativeオーバーレイ

試してみる

サンプルを準備中…

いちばん短い使い方

Photo.jsx
<MotionZoom
  src={photo.thumb}
  zoomSrc={photo.full}
  width={240}
  height={160}
  style={{ objectFit: 'cover', borderRadius: 12 }}
/>;

代わりに処理してくれること

  • クリック、Enter、Space で、画像がその場から margin の内側いっぱいに拡大します。
  • 拡大されたコピーは、object-fit の切り抜きや角の丸みも含め、サムネイルとまったく同じ見た目から始まります。
  • zoomSrc は読み込みが終わるとフェードインします。
  • クリック、Escape、またはドラッグで払うと閉じます。すばやく投げても閉じ、短いドラッグならスプリングで戻ります。

こんなときに

  • 写真のグリッド。
  • 商品ギャラリー。
  • ブログ記事の中の画像。

props

Prop型デフォルト説明
srcstringその場に表示する画像。
zoomSrcstring読み込みが終わると表示される大きな画像。縦横比は同じにしてください。
marginnumber24拡大した画像のまわりに残す余白(ピクセル)。
disabledbooleanfalse拡大を無効にします。
onZoomChange(zoomed) => void拡大したときに true、閉じたときに false を受け取って実行されます。
backdropStyleCSSProperties背景のインラインスタイル。
transitionTransitionspringタイミングカーブ { duration, easing } かスプリング { tempo: 'spring', spring }。スプリングは中断されても勢いを保ちます。

ほかの props は描画される要素に渡るので、className、style、イベントハンドラーはいつもどおり使えます。

Web と React Native

オーバーレイは拡大している間だけ存在するので(Web ではトップレイヤーの dialog)、画像は段落の中など、どこにでも置けます。ほかの props は img に渡ります。

React Native では source と zoomSource を渡します。オーバーレイは透明な Modal です。

使っているサンプル

検索

入力するとドキュメントを検索します。