AMP

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

amp-stream-gallery

實驗性
Bento

說明

沿水平軸一次顯示多個相似內容,適用於相關產品或文章等功能。

 

必要指令碼

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

用法

串流圖庫,可沿水平軸一次顯示多個相似的內容片段。如要實作更自訂化的 UX,請參閱 amp-base-carousel

範例

在以下範例中,我們使用 amp-stream-gallery 在回應式容器中顯示其內容,並根據可視區域大小,一次顯示不同數量的子項目。

<amp-stream-gallery width="7.5" height="2" layout="responsive">
  <amp-img src="img1.png" layout="flex-item"></amp-img>
  <amp-img src="img2.png" layout="flex-item"></amp-img>
  <amp-img src="img3.png" layout="flex-item"></amp-img>
  <amp-img src="img4.png" layout="flex-item"></amp-img>
  <amp-img src="img5.png" layout="flex-item"></amp-img>
  <amp-img src="img6.png" layout="flex-item"></amp-img>
  <amp-img src="img7.png" layout="flex-item"></amp-img>
</amp-stream-gallery>

amp-stream-gallery 元件的每個直接子項都被視為圖庫中的一個項目。這些節點的每一個也都可以有任意 HTML 子項。

圖庫包含任意數量的項目,以及可選的導覽箭頭,可向前或向後移動指定的項目數量。

如果使用者滑動或使用可自訂的箭頭按鈕,圖庫會在項目之間前進。

在有效的 AMP 文件之外獨立使用

Bento 可讓您在非 AMP 頁面中使用 AMP 元件,而無需完全投入使用有效的 AMP。您可以取得這些元件,並將其放置在不支援 AMP 的架構和 CMS 實作中。請參閱我們的指南 在非 AMP 頁面中使用 AMP 元件,以瞭解詳情。

如要尋找獨立版本的 amp-stream-gallery,請參閱 bento-stream-gallery

使用者應注意的行為

投影片版面配置

投影片會由輪播自動調整大小。您應為投影片提供 layout="flex-item"

<amp-stream-gallery >
  <amp-img layout="flex-item" src="…"></amp-img>
</amp-stream-gallery>

當輪播以水平方式版面配置時,投影片的預設高度為 100%。這可以透過 CSS 輕鬆變更,或使用 layout="fixed-height" 變更。指定高度時,投影片將在輪播中垂直置中。

如果您想要水平置中投影片內容,您會想要建立包裝元素,並使用該元素來置中內容。

屬性

媒體查詢

<amp-stream-gallery> 的屬性可以設定為根據 媒體查詢 使用不同的選項。

行為

controls (控制項)

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

  • always:箭頭一律顯示。
  • auto:當輪播最近透過滑鼠收到互動時,箭頭會顯示;當輪播最近透過觸控收到互動時,箭頭不會顯示。在觸控裝置的首次載入時,箭頭會顯示,直到首次互動為止。
  • never:箭頭絕不顯示。

extra-space (額外空間)

可以是 "around" 或未定義。這決定在輪播中顯示計算出的可見投影片數量後,如何分配額外空間。如果為 "around",則空白區域會平均分配在輪播周圍,並使用 justify-content: center;否則,空間會分配到 LTR 文件的輪播右側,以及 RTL 文件的輪播左側。

loop (循環)

可以是 truefalse,預設為 true。若為 true,輪播將允許使用者從第一個項目移回最後一個項目,反之亦然。循環播放必須至少有三個投影片。

outset-arrows (外側箭頭)

可以是 truefalse,預設為 false。若為 true,輪播將在外側顯示其箭頭,並位於投影片的兩側。請注意,使用外側箭頭時,投影片容器的有效長度會比其指定容器的已分配空間少 100 像素 - 每側箭頭各 50 像素。若為 false,輪播將在內側顯示其箭頭,並覆蓋在投影片的左右邊緣上方。

peek (偷看)

數字,預設為 0。這決定要額外顯示多少投影片 (在目前投影片的一側或兩側),以作為向使用者指示輪播可滑動的提示。

通用屬性

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

min-visible-count (最小可見計數)

數字,預設為 1。決定在給定時間應顯示的最小投影片數量。可以使用小數值來顯示部分額外投影片。

max-visible-count (最大可見計數)

數字,預設為 Number.MAX_VALUE。決定在給定時間應顯示的最大投影片數量。可以使用小數值來顯示部分額外投影片。

min-item-width (最小項目寬度)

數字,預設為 1。決定每個項目的最小寬度,用於解析在圖庫的整體寬度內一次可以顯示多少個完整項目。

max-item-width (最大項目寬度)

數字,預設為 Number.MAX_VALUE。決定每個項目的最大寬度,用於解析在圖庫的整體寬度內一次可以顯示多少個完整項目。

投影片貼齊

slide-align (投影片對齊)

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

snap (貼齊)

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

動作

next (下一個)

將輪播向前移動計算出的可見投影片數量。

prev (上一個)

將輪播向後移動計算出的可見投影片數量。

goToSlide (前往投影片)

將輪播移動到 index 引數指定的投影片。

活動

slideChange (投影片變更)

當輪播顯示的索引變更時,會觸發此事件。新的索引可透過 event.index 取得。

樣式設定

您可以使用 amp-stream-gallery 元素選取器來自由設定輪播樣式。

自訂箭頭按鈕

箭頭按鈕可以透過傳入您自己的自訂標記來自訂。例如,您可以使用以下 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-stream-gallery >
  <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-stream-gallery>

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

  <amp-stream-gallery id="carousel-1" ><div slot="next-arrow"></div>
    <div slot="prev-arrow"></div>
  </amp-stream-gallery>
  <button on="tap:carousel-1.prev()">Previous</button>
  <button on="tap:carousel-1.next()">Next</button>
需要更多協助嗎?

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

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

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

前往 GitHub