重要事項:此文件不適用於您目前選取的格式 廣告!
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
動作會採用 scale
、x
、y
作為參數,並設定子內容的 CSS transform 屬性。如果未指定 x
或 y
值,內容會縮放至中心。
假設頁面上有一個 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 像素。將 scale
、x
和 y
屬性視為在動畫後直接套用至內容的 CSS transform 屬性。
活動
transformEnd
每當平移或縮放動畫完成時,<amp-pan-zoom>
元件會觸發 transformEnd
事件。此事件會發出 scale
、x
和 y
參數。scale
參數包含正在縮放的子內容的目前比例。x
和 y
參數分別包含子內容從中心在像素中的 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