所有元件

MotionZoom

從原位放大到全螢幕的圖片;拖走即可關閉。

WebReact Native浮層

動手試試

正在準備範例…

最簡用法

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

它替你處理的事

  • 點擊、Enter 或空白鍵會讓圖片從原位放大,填滿 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。

用到它的範例

搜尋

輸入關鍵字搜尋文件。