">文档:<amp-lightbox-gallery> - amp.dev - AMP 框架
AMP

amp-lightbox-gallery

 
您现在可以使用此组件在有效的 AMP 文档之外使用此组件的 Bento 版本。在 Bento 指南 中了解更多信息。

说明

提供“灯箱”体验。在用户交互时,UI 组件会扩展以填充视口,直到用户将其关闭。

 

所需的脚本

<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

操作

打开

打开图片库。如果指定了图片 id,可以通过点击其他元素触发:on="tap:amp-lightbox-gallery.open(id='image-id')"

分析

要跟踪 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