AMP

amp-pan-zoom

描述

為任意內容提供縮放和平移功能。

 

必要指令碼

<script async custom-element="amp-pan-zoom" src="https://cdn.ampproject.org/v0/amp-pan-zoom-0.1.js"></script>

支援的版面配置

用法

<amp-pan-zoom> 元件接受一個任意內容的子項,並讓使用者能夠透過雙擊或雙指撥動縮放動作來縮放和平移內容。在可縮放內容或其子項上註冊的點擊事件將在 300 毫秒延遲後觸發。

<amp-layout layout="responsive" width="4" height="3">
  <amp-pan-zoom layout="fill">
    <svg>
      ...
    </svg>
  </amp-pan-zoom>
</amp-layout>

有效的子標籤

請參閱 amp-pan-zoom合格子標籤清單

屬性

max-scale (選填)

指定最大縮放比例,應為 1 到 9 的正數。預設值為 3。

initial-scale (選填)

指定預設縮放比例,應為 1 到 9 的正數。預設值為 1。

initial-x, initial-y (選填)

指定預設平移座標,否則兩者都設為 0。該值應為整數。

reset-on-resize (選填)

指將圖片置中並將圖片比例設定回 1 的功能。設定此屬性會使元件在圖片本身大小調整時重設可縮放內容。

controls (選填)

顯示預設控制項(放大/縮小按鈕),可透過公開 CSS 類別進行自訂。

通用屬性

此元素包含擴充至 AMP 元件的通用屬性

動作

transform

transform 動作接受 scalexy 作為參數,並設定子內容的 CSS transform 屬性。如果未指定 xy 值,則內容會縮放至中心。

假設頁面上有一個 ID 為 pan-zoom<amp-pan-zoom> 元件,一個帶有 on="tap:pan-zoom.transform(scale=3)" 的按鈕將縮放至內容中心 3 倍比例,一個帶有 on="tap:pan-zoom.transform(scale=3, x=50, y=10)" 的按鈕將首先將內容縮放至 3 倍比例,然後將內容向左移動 50 像素,向上移動 10 像素。請考量動畫後直接套用至內容 CSS transform 屬性的 scalexy 屬性。

活動

transformEnd

每當平移或縮放動畫完成時,<amp-pan-zoom> 元件就會觸發 transformEnd 事件。此事件會發出 scalexy 參數。scale 參數包含正在縮放的子內容的目前比例。xy 參數分別包含子內容從中心開始的 x 和 y 平移(以像素為單位)。

此範例包含一個 amp-pan-zoom 元件,它將在 transformEnd 時更新 amp-state

<amp-state id="transform">
  <script type="application/json">
    {
      "scale": 1,
      "y": 0,
      "x": 0
    }
  </script>
</amp-state>
<p
  [text]="'Current scale: ' + transform.scale + ', x: ' + transform.x + ', y: ' + transform.y"
>
  Current scale: 1
</p>
<amp-pan-zoom
  layout="responsive"
  width="1"
  height="1"
  id="pan-zoom"
  on="transformEnd:AMP.setState({transform: {scale: event.scale, x: event.x, y: event.y}})"
>
  ...
</amp-pan-zoom>

樣式設定

以下公開 CSS 類別公開以允許自訂縮放按鈕

.amp-pan-zoom-button .amp-pan-zoom-in-icon .amp-pan-zoom-out-icon;

使用 .amp-pan-zoom-button 自訂所有按鈕的尺寸、定位、背景顏色、邊框半徑。使用 .amp-pan-zoom-in-icon 自訂放大按鈕的圖示。使用 .amp-pan-zoom-out-icon 自訂縮小按鈕的圖示。您也可以完全隱藏這些按鈕,並使用 transform 動作建立自己的按鈕。若要隱藏它們,只需套用

.amp-pan-zoom-button {
  display: none;
}

驗證

請參閱 AMP 驗證器規格中的 amp-pan-zoom 規則

需要更多協助嗎?

您已經閱讀這份文件十幾次,但它仍然沒有真正涵蓋您的所有問題?也許其他人也有同樣的感受:在 Stack Overflow 上與他們聯繫。

前往 Stack Overflow
發現錯誤或缺少功能?

AMP 專案強烈鼓勵您的參與和貢獻!我們希望您能成為我們開放原始碼社群的長期參與者,但我們也歡迎針對您特別熱衷的問題提供一次性的貢獻。

前往 GitHub