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 在回應式容器中顯示其內容,並根據視窗大小,一次顯示不同數量的子項。

<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