AMP

重要事項:本文件不適用於您目前選取的格式 email

amp-base-carousel

實驗性功能
 
您現在可以在有效的 AMP 文件外使用此元件,方法是使用此元件的 Bento 版本。請參閱 Bento 指南 以瞭解詳情。

說明

沿著水平軸或垂直軸顯示多個相似的內容片段。

 

必要指令碼

<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> 的屬性,以便根據 媒體查詢 使用不同的選項。

設定選項

可見投影片數量

混合長度

truefalse,預設為 false。若為 true,則對每個投影片使用現有的寬度 (或水平時的高度)。這允許使用具有不同寬度投影片的輪播。

visible-count (可見數量)

數字,預設為 1。決定在給定時間應顯示多少張投影片。可以使用小數值來使部分額外投影片可見。當 mixed-lengthtrue 時,此選項會被忽略。

advance-count (前進數量)

數字,預設為 1。決定使用上一個或下一個箭頭前進時,輪播將前進多少張投影片。在指定 visible-count 屬性時,這非常有用。

自動前進

auto-advance (自動前進)

truefalse,預設為 false。根據延遲自動將輪播前進到下一張投影片。如果使用者手動變更投影片,則自動前進會停止。請注意,如果未啟用 loop,則在到達最後一個項目時,自動前進將向後移動到第一個項目。

auto-advance-count (自動前進數量)

數字,預設為 1。決定自動前進時,輪播將前進多少張投影片。在指定 visible-count 屬性時,這非常有用。

auto-advance-interval (自動前進間隔)

數字,預設為 1000。指定輪播後續自動前進之間的時間量 (以毫秒為單位)。

auto-advance-loops (自動前進循環次數)

數字,預設為 。輪播在停止之前應循環瀏覽投影片的次數。

對齊

snap (對齊)

truefalse,預設為 true。決定輪播在捲動時是否應對齊到投影片。

snap-align (對齊方式)

startcenter。當開始對齊時,投影片的開始 (例如,水平對齊時的左邊緣) 會與輪播的開始對齊。當中心對齊時,投影片的中心會與輪播的中心對齊。

snap-by (對齊依據)

數字,預設為 1。這決定了對齊的粒度,並且在使用 visible-count 時非常有用。這

其他

controls (控制項)

"always""auto""never",預設為 "auto"。這決定是否以及何時顯示上一個/下一個導航箭頭。注意:當 outset-arrowstrue 時,箭頭會 "always" 顯示。

  • always:箭頭始終顯示。
  • auto:當輪播最近透過滑鼠收到互動時,會顯示箭頭;當輪播最近透過觸控收到互動時,則不會顯示箭頭。在觸控裝置上首次載入時,箭頭會顯示直到首次互動。
  • never:箭頭永遠不會顯示。
slide (投影片)

數字,預設為 0。這決定了輪播中顯示的初始投影片。這可以與 amp-bind 一起使用,以控制目前顯示的投影片。

loop (循環)

truefalse,省略時預設為 false。若為 true,則輪播將允許使用者從第一個項目移回最後一個項目,反之亦然。必須至少有 visible-count 的三倍投影片存在才能進行循環。

horizontal (水平)

truefalse,預設為 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>

如果您想要更自訂箭頭按鈕,可以使用 nextprev 動作。例如,如果您想要將按鈕放置在輪播下方,並使用「上一個」和「下一個」文字,而不是將它們放在預設位置,則可以使用以下 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