AMP

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

amp-carousel

說明

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

 

必要指令碼

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

用法

用於沿水平軸顯示多個相似內容片段的通用輪播;旨在實現彈性和高效能。

amp-carousel 元件的每個直接子項都被視為輪播中的項目。這些節點中的每一個也可能具有任意 HTML 子項。

輪播包含任意數量的項目,以及用於向前或向後移動的可選導航箭頭。對於 type="slides",箭頭一次移動一個項目。對於 type="carousel",箭頭一次移動一個輪播的寬度。

如果使用者滑動或點擊可選的導航箭頭,輪播會在項目之間前進。

<amp-carousel
  width="450"
  height="300"
  layout="responsive"
  type="slides"
  role="region"
  aria-label="Basic carousel"
>
  <amp-img
    src="/static/inline-examples/images/image1.jpg"
    width="450"
    height="300"
  ></amp-img>
  <amp-img
    src="/static/inline-examples/images/image2.jpg"
    width="450"
    height="300"
  ></amp-img>
  <amp-img
    src="/static/inline-examples/images/image3.jpg"
    width="450"
    height="300"
  ></amp-img>
</amp-carousel>
在 Playground 中開啟此程式碼片段

<amp-carousel> 0.1 的差異

  • autoplay 允許用於 type="carousel"
  • loop 允許用於 type="carousel"

移轉注意事項

  • 將必要指令碼從 amp-carousel-0.1 更新為 amp-carousel-0.2
  • 確保用於定位下一個/上一個箭頭的任何 CSS 仍然有效。請參閱樣式設定以取得有關箭頭定位的更多資訊。
  • 確保用於設定輪播樣式的任何 CSS 仍然有效。<amp-carousel> 0.2 的內部 DOM 結構與 0.1 不同,會影響以內部元素為目標的 CSS 選擇器,例如 amp-carousel > div。任何使用 .amp-class-name 格式的選擇器應仍然有效。
  • 注意:對 amp-carousel-0.1 的支援有限,且計畫在未來棄用。

前進至特定投影片

在元素的 on 屬性上設定 tap:carousel-id.goToSlide(index=N) 方法,將在使用者點擊或按一下時,將具有「carousel-id」ID 的輪播前進到索引 = N 的投影片 (第一個投影片的索引為 0,第二個投影片的索引為 1,依此類推)。

在以下範例中,我們有一個包含三張圖片的輪播,輪播下方有預覽按鈕。當使用者按一下其中一個按鈕時,會顯示對應的輪播項目。

<amp-carousel
  id="carousel-with-preview"
  width="450"
  height="300"
  layout="responsive"
  type="slides"
  role="region"
  aria-label="Carousel with slide previews"
>
  <amp-img
    src="/static/inline-examples/images/image1.jpg"
    width="450"
    height="300"
    layout="responsive"
    alt="apples"
  ></amp-img>
  <amp-img
    src="/static/inline-examples/images/image2.jpg"
    width="450"
    height="300"
    layout="responsive"
    alt="lemons"
  ></amp-img>
  <amp-img
    src="/static/inline-examples/images/image3.jpg"
    width="450"
    height="300"
    layout="responsive"
    alt="blueberries"
  ></amp-img>
</amp-carousel>
<div class="carousel-preview">
  <button on="tap:carousel-with-preview.goToSlide(index=0)">
    <amp-img
      src="/static/inline-examples/images/image1.jpg"
      width="60"
      height="40"
      alt="apples"
    ></amp-img>
  </button>
  <button on="tap:carousel-with-preview.goToSlide(index=1)">
    <amp-img
      src="/static/inline-examples/images/image2.jpg"
      width="60"
      height="40"
      alt="lemons"
    ></amp-img>
  </button>
  <button on="tap:carousel-with-preview.goToSlide(index=2)">
    <amp-img
      src="/static/inline-examples/images/image3.jpg"
      width="60"
      height="40"
      alt="blueberries"
    ></amp-img>
  </button>
</div>
在 Playground 中開啟此程式碼片段

自動播放,尤其是無限循環的輪播,可能會對使用者造成非常分散注意力和困惑的情況,尤其是對於有認知障礙的使用者。一般來說,我們建議避免使用自動播放輪播。雖然自動播放輪播會在使用者與輪播互動後停止,但也請考慮新增明確的「播放/暫停」控制項。

預設情況下,<amp-carousel> 在呈現時會以程式方式識別為清單 (在容器元素上使用 role="list",在每個項目上使用 role="listitem")。但是,對於 <amp-carousel type="slides">,目前未提供任何特定的 role。因此,對於使用輔助技術的使用者來說,在他們到達輪播時,頁面讀取/導航時並不明顯。我們建議在 <amp-carousel> 中加入明確的 role="region" 和描述性的 aria-label (通用 aria-label="Carousel" 或更具描述性的標籤,例如 aria-label="Latest news items")。

目前,<amp-carousel type="slides"> 輪播宣告為 ARIA 即時區域 (使用 aria-live="polite"),這表示每次顯示新的投影片時,輔助技術 (例如螢幕閱讀器) 都會宣告投影片的完整內容。由於輪播最初的呈現方式,這也可能導致在頁面載入時宣告輪播的完整內容。這也表示包含 autoplay 輪播的頁面會在投影片自動前進時持續宣告。目前沒有針對此問題的解決方案。

屬性

type (類型)

指定輪播項目的顯示類型,可以是

  • carousel (輪播) (預設值):所有投影片都會顯示,並且可以水平捲動。每個投影片可以使用 CSS 指定不同的寬度。
  • slides (投影片):一次顯示單個投影片,每個投影片在使用者滑動時會卡入定位。

controls (控制項) (選填)

永久顯示左箭頭和右箭頭,供使用者在行動裝置上導航輪播項目。預設情況下,導航箭頭會在使用者滑動到行動裝置上的另一個投影片後消失。

箭頭的能見度也可以透過樣式設定來控制,並且可以使用媒體查詢來僅在特定螢幕寬度下顯示箭頭。在桌面上,除非只有單個子項存在,否則箭頭始終顯示。

data-next-button-aria-label (下一個按鈕 aria 標籤) (選填)

設定 amp-carousel-button-next 的 aria 標籤。如果未提供值,則 aria 標籤預設為「輪播中的下一個項目」。

data-prev-button-aria-label (上一個按鈕 aria 標籤) (選填)

設定 amp-carousel-button-prev 的 aria 標籤。如果未提供值,則 aria 標籤預設為「輪播中的上一個項目」。

data-button-count-format (按鈕計數格式) (選填)

一個格式字串,看起來像 (%s of %s),用作 amp-carousel-button-next/amp-carousel-button-prev 的 aria 標籤的後綴。這向使用螢幕閱讀器的使用者提供有關他們在輪播中進度的資訊。如果未提供值,則預設為 (%s of %s)

autoplay (自動播放) (選填)

在沒有使用者互動的情況下,定期前進到下一個投影片。如果使用者手動變更投影片,則會停止自動播放。

如果存在但沒有值

  • 預設情況下,以 5000 毫秒間隔 (5 秒) 前進一個投影片;這可以被 delay 屬性覆寫。
  • 自動播放需要至少 2 個投影片才能發生。

如果存在且具有值

  • 在完成所需數量的循環後停止自動播放。

delay (延遲) (選填)

指定啟用 autoplay 時延遲前進到下一個投影片的持續時間 (以毫秒為單位)。請注意,延遲的最小允許值為 1000 毫秒。

loop (循環) (選填)

允許使用者前進超過第一個項目或最後一個項目。循環必須至少有 3 個投影片才能發生。

以下範例顯示具有控制項、循環和延遲自動播放的投影片輪播。

<amp-carousel type="slides"
  width="450"
  height="300"
  controls
  loop
  autoplay
  delay="3000"  data-next-button-aria-label="Go to next slide"
  data-previous-button-aria-label="Go to previous slide"
  role="region"
  aria-label="Looping carousel">
  <amp-img src="/static/inline-examples/images/image1.jpg"
    width="450"
    height="300"></amp-img>
  <amp-img src="/static/inline-examples/images/image2.jpg"
    width="450"
    height="300"></amp-img>
  <amp-img src="/static/inline-examples/images/image3.jpg"
    width="450"
    height="300"></amp-img>
</amp-carousel>
在 Playground 中開啟此程式碼片段

slide (投影片) (選填)

指定輪播首次呈現時應顯示的索引。這可以使用 amp-bind 進行更新,以變更顯示的索引。

通用屬性

此元素包含擴展到 AMP 元件的通用屬性

動作

goToSlide(index=INTEGER)

將輪播前進到指定的投影片索引。

toggleAutoplay(toggleOn=true|false)

切換輪播的自動播放狀態。toggleOn 是選填的。

活動

slideChange (投影片變更)

當輪播的目前投影片變更時觸發。

// Slide number.
Event.index

樣式設定

驗證

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

需要更多協助嗎?

您已閱讀此文件十幾次,但它並未真正涵蓋您的所有問題?也許其他人也有同樣的感覺:在 Stack Overflow 上與他們聯繫。

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

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

前往 GitHub