AMP

amp-lightbox-gallery

 
您現在可以使用此元件的 Bento 版本在有效的 AMP 文件之外使用此元件。 在 Bento 指南中了解更多資訊。

描述

提供「燈箱」體驗。 在使用者互動時,UI 元件會展開以填滿檢視區,直到使用者關閉為止。

 

必要的指令碼 (Scripts)

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

用法

amp-lightbox-gallery 元件為 AMP 元件(例如 amp-imgamp-carousel)提供「燈箱」體驗。 當使用者與 AMP 元素互動時,UI 元件會展開以填滿檢視區,直到使用者關閉為止。 目前僅支援圖片。

要使用 amp-lightbox-gallery,請確保所需的指令碼包含在您的 <head> 區段中,然後在 <amp-img><amp-carousel> 元素上新增 lightbox 屬性。

若要在燈箱中顯示單張圖片,也可以使用 <amp-image-lightbox> 元件。 若要以燈箱顯示其他類型的元素,請使用 <amp-lightbox>

使用 <amp-img> 顯示燈箱

點擊任何 <amp-img> 會在燈箱圖庫中開啟圖片。 燈箱圖庫會處理圖片(例如縮放和平移)、啟用滑動以在圖片之間導航,並提供縮圖圖庫檢視,以便在網格中瀏覽所有圖片縮圖。

<amp-img src="cat.jpg" width="100" height="100" lightbox></amp-img>
<amp-img src="dog.jpg" width="100" height="100" lightbox></amp-img>
<amp-img src="bird.jpg" width="100" height="100" lightbox></amp-img>

使用 <amp-carousel> 顯示燈箱

您可以在 <amp-carousel> 上新增 lightbox 屬性,以將其所有子元素放入燈箱。 目前,<amp-lightbox-gallery> 元件僅支援包含 <amp-img> 作為子元素的輪播。 當您在燈箱中導航輪播項目時,原始輪播投影片會同步,以便在關閉燈箱時,使用者最終會回到與原本相同的投影片。 目前僅支援 type='slides' 輪播。

<amp-carousel
  lightbox
  width="1600"
  height="900"
  layout="responsive"
  type="slides"
>
  <amp-img src="image1" width="200" height="100"></amp-img>
  <amp-img src="image1" width="200" height="100"></amp-img>
  <amp-img src="image1" width="200" height="100"></amp-img>
</amp-carousel>

新增說明文字

您可以選擇為燈箱中的每個元素指定說明文字。 <amp-lightbox-gallery> 會按照以下優先順序自動讀取和顯示這些欄位:

  • figcaption (如果燈箱元素是 figure 的子元素)
  • aria-describedby
  • alt
  • aria-label
  • aria-labelledby

在以下範例中,<amp-lightbox-gallery> 顯示 figcaption 值作為其描述,顯示「多倫多的 CN 塔是...」。

<figure>
  <amp-img
    id="hero-img"
    lightbox="toronto"
    src="https://picsum.photos/1600/900?image=1075"
    layout="responsive"
    width="1600"
    height="900"
    alt="Picture of CN tower."
  >
  </amp-img>
  <figcaption class="image">
    Toronto's CN tower was built in 1976 and was the tallest free-standing
    structure until 2007.
  </figcaption>
</figure>

在以下範例中,<amp-lightbox-gallery> 顯示 alt 值作為其描述,顯示「CN 塔的圖片」。

<amp-img
  id="hero-img"
  lightbox="toronto"
  src="https://picsum.photos/1600/900?image=1075"
  layout="responsive"
  width="1600"
  height="900"
  alt="Picture of CN tower"
>
</amp-img>

實作縮圖預覽

燈箱項目具有縮圖圖庫檢視。 您可以選擇透過屬性 lightbox-thumbnail-id 為您的燈箱元素指定縮圖項目,該屬性參考具有 layout="nodisplay"<amp-img> 元素的 id

<amp-youtube
  width="480"
  height="270"
  layout="responsive"
  data-videoid="lBTCB7yLs8Y"
  lightbox-thumbnail-id="my-thumbnail-img"
>
</amp-youtube>

<amp-img
  id="my-thumbnail-img"
  width="200"
  height="200"
  layout="nodisplay"
  src="https://picsum.photos/200/200?image=1074"
>
</amp-img>

如果未指定縮圖,<amp-img> 元素將按照 object-fit: cover 進行裁剪,<amp-video> 將使用其 poster 屬性中指定的圖片 src,並且占位符圖片將用於具有占位符的燈箱元素。

樣式

您可以透過使用標準 CSS 鎖定 amp-lightbox-gallery-caption 類別來設定 amp-lightbox-gallery 元件的說明文字樣式。 可以設定樣式的屬性包括 font-sizecolor

動作 (Actions)

開啟 (open)

開啟燈箱圖庫。 如果您指定圖片 idon="tap:amp-lightbox-gallery.open(id='image-id')",則可以透過點擊另一個元素來觸發。

分析 (Analytics)

若要追蹤 amp-lightbox-gallery 的使用情況,請使用以下分析事件之一:

lightboxOpened

此事件追蹤使用者點擊燈箱 <amp-img> 時開啟燈箱的時間。

您可以使用以下程式碼片段追蹤此事件:

<amp-analytics>
  <script type="application/json">
    {
      "requests": {
        "open": "https://foo.com/open"
      },
      "triggers": {
        "trackLightboxOpened": {
          "on": "lightboxOpened",
          "request": "open"
        }
      }
    }
  </script>
</amp-analytics>

thumbnailsViewToggled

此事件追蹤當使用者在燈箱檢視中時,點擊觸發器觸發縮圖檢視的時間。

您可以使用以下程式碼片段追蹤此事件:

<amp-analytics>
  <script type="application/json">
    {
      "requests": {
        "thumb": "https://foo.com/thumb"
      },
      "triggers": {
        "trackThumbnailsViewToggled": {
          "on": "thumbnailsViewToggled",
          "request": "thumb"
        }
      }
    }
  </script>
</amp-analytics>

descriptionOverflowToggled

此事件追蹤使用者透過點擊描述來展開/摺疊描述時切換描述的時間,追蹤與燈箱圖片描述的互動。

您可以使用以下程式碼片段追蹤此事件:

<amp-analytics>
  <script type="application/json">
    {
      "requests": {
        "descOverflow": "https://foo.com/descOverflow"
      },
      "triggers": {
        "trackDescriptionOverflowed": {
          "on": "descriptionOverflowToggled",
          "request": "descOverflow"
        }
      }
    }
  </script>
</amp-analytics>

驗證

請參閱 AMP 驗證器規格中的 amp-image-lightbox-gallery 規則

需要更多協助嗎?

您已經閱讀這份文件十幾次了,但它真的沒有涵蓋您的所有問題嗎? 也許其他人也有同樣的感受:在 Stack Overflow 上與他們聯繫。

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

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

前往 GitHub