AMP

amp-stream-gallery

實驗性
Bento

說明

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

 

必要指令碼

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

用法

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

範例

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

<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