amp-lightbox-gallery
描述
提供“灯箱”体验。在用户交互后,UI 组件会扩展以填充视口,直到用户将其关闭。
必需的脚本
<script async custom-element="amp-lightbox-gallery" src="https://cdn.ampproject.org/v0/amp-lightbox-gallery-1.0.js"></script>
<script async custom-element="amp-lightbox-gallery" src="https://cdn.ampproject.org/v0/amp-lightbox-gallery-1.0.js"></script> <link rel="stylesheet" href="https://cdn.ampproject.org/v0/amp-lightbox-gallery-1.0.css">
用法
amp-lightbox-gallery
组件为 AMP 组件(例如,amp-img
、amp-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>
显示灯箱
您可以将 lightbox
属性添加到 <amp-carousel>
,以灯箱显示其所有子项。目前,<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
属性为灯箱显示的元素指定一个缩略图,该属性引用 <amp-img>
元素的 id
,该元素的 layout="nodisplay"
。
<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-size
和 color
。
操作
打开
打开灯箱图库。如果您指定图像 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 文档之外的独立使用
Bento 允许您在非 AMP 页面中使用 AMP 组件,而无需提交到完全有效的 AMP。您可以将这些组件放置在使用不支持 AMP 的框架和 CMS 的实现中。在我们的指南 在非 AMP 页面中使用 AMP 组件 中阅读更多信息。
要查找 amp-lightbox-gallery
的独立版本,请参阅 bento-lightbox-gallery
。
验证
请参阅 AMP 验证器规范中的 amp-image-lightbox-gallery
规则。
您已经阅读本文档很多次了,但它并没有真正涵盖您所有的问题?也许其他人也有同样的感觉:请在 Stack Overflow 上联系他们。
转到 Stack Overflow 发现错误或缺少功能?AMP 项目强烈鼓励您的参与和贡献!我们希望您能成为我们开源社区的持续参与者,但我们也欢迎您对您特别热衷的问题做出一次性贡献。
转到 GitHub