重要事項:本文件不適用於您目前選取的格式 stories!
amp-base-carousel
說明
沿著水平軸或垂直軸顯示多個相似的內容片段。
必要指令碼
<script async custom-element="amp-base-carousel" src="https://cdn.ampproject.org/v0/amp-base-carousel-0.1.js"></script>
用法
用於沿著水平或垂直軸顯示多個相似內容片段的通用輪播。
amp-base-carousel
元件的每個直接子項都被視為輪播中的一個項目。這些節點中的每一個也可能具有任意 HTML 子項。
輪播包含任意數量的項目,以及用於向前或向後移動單個項目的可選導航箭頭。
如果使用者滑動或使用可自訂的箭頭按鈕,輪播會在項目之間前進。
屬性
媒體查詢
可以設定 <amp-base-carousel>
的屬性,以便根據媒體查詢使用不同的選項。
設定選項
可見投影片數量
mixed-length
true
或 false
,預設為 false
。如果為 true,則對每個投影片使用現有的寬度(或水平時的高度)。這允許使用具有不同寬度的投影片的輪播。
visible-count
數字,預設為 1
。決定在給定時間應顯示多少個投影片。可以使用小數值來使額外投影片的一部分可見。當 mixed-length
為 true
時,此選項會被忽略。
advance-count
數字,預設為 1
。決定使用上一個或下一個箭頭前進時,輪播將前進多少個投影片。當指定 visible-count
屬性時,這非常有用。
自動前進
auto-advance
true
或 false
,預設為 false
。根據延遲自動將輪播前進到下一個投影片。如果使用者手動更改投影片,則自動前進將停止。請注意,如果未啟用 loop
,當到達最後一個項目時,自動前進將向後移動到第一個項目。
auto-advance-count
數字,預設為 1
。決定自動前進時,輪播將前進多少個投影片。當指定 visible-count
屬性時,這非常有用。
auto-advance-interval
數字,預設為 1000
。指定輪播後續自動前進之間的時間量(以毫秒為單位)。
auto-advance-loops
數字,預設為 ∞
。輪播在停止之前應前進瀏覽投影片的次數。
貼齊
snap
true
或 false
,預設為 true
。決定輪播在捲動時是否應貼齊投影片。
snap-align
start
或 center
。當開始對齊時,投影片的開始(例如,水平對齊時的左邊緣)與輪播的開始對齊。當中心對齊時,投影片的中心與輪播的中心對齊。
snap-by
數字,預設為 1
。這決定了貼齊的粒度,並且在使用 visible-count
時非常有用。此
其他
controls
"always"
、"auto"
或 "never"
,預設為 "auto"
。這決定了是否以及何時顯示上一個/下一個導航箭頭。注意:當 outset-arrows
為 true
時,箭頭會 "always"
顯示。
always
:箭頭始終顯示。auto
:當輪播最近透過滑鼠收到互動時,會顯示箭頭;當輪播最近透過觸控收到互動時,則不顯示箭頭。在觸控裝置上首次載入時,箭頭會顯示直到首次互動。never
:箭頭永遠不顯示。
slide
數字,預設為 0
。這決定了輪播中顯示的初始投影片。這可以與 amp-bind
一起使用來控制目前顯示哪個投影片。
loop
true
或 false
,省略時預設為 false
。如果為 true,輪播將允許使用者從第一個項目移回最後一個項目,反之亦然。迴圈發生時,必須至少存在 visible-count
的三倍投影片。
horizontal
true
或 false
,預設為 true
。如果為 true,輪播將水平佈局,使用者可以左右滑動。如果為 false,輪播將垂直佈局,使用者可以上下滑動。
通用屬性
此元素包含通用屬性,這些屬性已擴展到 AMP 元件。
動作
next
將輪播向前移動 advance-count
個投影片。
prev
將輪播向後移動 advance-count
個投影片。
goToSlide
將輪播移動到 index
參數指定的投影片。
活動
slideChange
當輪播顯示的索引已變更時,會觸發此事件。新的索引可透過 event.index
取得。
樣式設定
您可以自由使用 amp-base-carousel
元素選取器來設定輪播樣式。
自訂箭頭按鈕
箭頭按鈕可以透過傳入您自己的自訂標記來自訂。例如,您可以使用以下 HTML 和 CSS 重新建立預設樣式
.carousel-prev, .carousel-next { filter: drop-shadow(0px 1px 2px #4a4a4a); width: 40px; height: 40px; padding: 20px; background-color: transparent; border: none; outline: none; } .carousel-prev { background-image: url('data:image/svg+xml;charset=utf-8,<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M14,7.4 L9.4,12 L14,16.6" fill="none" stroke="#fff" stroke-width="2px" stroke-linejoin="round" stroke-linecap="round" /></svg>'); } .carousel-next { background-image: url('data:image/svg+xml;charset=utf-8,<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M10,7.4 L14.6,12 L10,16.6" fill="none" stroke="#fff" stroke-width="2px" stroke-linejoin="round" stroke-linecap="round" /></svg>'); }
<amp-base-carousel …> <div>first slide</div> … <button slot="next-arrow" class="carousel-next" aria-label="Next"></button> <button slot="prev-arrow" class="carousel-prev" aria-label="Previous" ></button> </amp-base-carousel>
如果您想要對箭頭按鈕進行更多自訂,可以使用 next
和 prev
動作。例如,如果您想要將按鈕放置在輪播下方,並使用「上一個」和「下一個」文字,而不是將它們放在預設位置,則可以使用以下 HTML
<amp-base-carousel id="carousel-1" …> … <div slot="next-arrow"></div> <div slot="prev-arrow"></div> </amp-carousel> <button on="tap:carousel-1.prev()">Previous</button> <button on="tap:carousel-1.next()">Next</button>
使用注意事項
RTL
<amp-base-carousel>
目前要求您在右到左 (rtl) 環境(例如阿拉伯語、希伯來語頁面)中時告知它。雖然輪播通常可以在沒有此功能的情況下運作,但可能存在一些錯誤。您可以讓輪播知道它應該以 rtl
方式運作,如下所示
<amp-base-carousel dir="rtl" …> … </amp-base-carousel>
如果輪播在 RTL 環境中,並且您希望輪播以 LTR 方式運作,則可以在輪播上明確設定 dir="ltr"
。
投影片版面配置
當未指定 mixed-lengths
時,投影片會由輪播自動調整大小。您應該讓投影片具有 layout="flex-item"
<amp-base-carousel …> <amp-img layout="flex-item" src="…"></amp-img> </amp-base-carousel>
當輪播水平佈局時,投影片的預設高度為 100%
。這可以透過 CSS 或使用 layout="fixed-height"
輕鬆變更。指定高度時,投影片將在輪播內垂直置中。
如果您想要水平置中您的投影片內容,您會想要建立一個包裝元素,並使用該元素來置中內容。
可見投影片數量
當使用 visible-slides
變更可見投影片的數量以回應媒體查詢時,您可能也想要變更輪播本身的外觀比例,以符合新的可見投影片數量。例如,如果您想要一次顯示三個投影片,且外觀比例為 1:1,則您會希望輪播本身的外觀比例為 3:1。同樣地,對於一次四個投影片,您會希望外觀比例為 4:1。此外,當變更 visible-slides
時,您可能也想要變更 advance-count
。
<!-- Using an aspect ratio of 3:2 for the slides in this example. --> <amp-base-carousel layout="responsive" width="3" height="1" heights="(min-width: 600px) calc(100% * 4 * 3 / 2), calc(100% * 3 * 3 / 2)" visible-count="(min-width: 600px) 4, 3" advance-count="(min-width: 600px) 4, 3" > <amp-img layout="flex-item" src="…"></amp-img> … </amp-base-carousel>
驗證
請參閱 AMP 驗證器規格中的 amp-base-carousel 規則。
您已閱讀本文檔十幾次,但它並未真正涵蓋您的所有問題?也許其他人也有相同的感受:在 Stack Overflow 上與他們聯絡。
前往 Stack Overflow 發現錯誤或缺少功能?AMP 專案強烈鼓勵您的參與和貢獻!我們希望您能成為我們開放原始碼社群的持續參與者,但我們也歡迎針對您特別熱衷的問題做出一次性的貢獻。
前往 GitHub