amp-stream-gallery
描述
沿水平轴一次显示多个相似的内容,用于相关产品或文章等功能。
必需脚本
<script async custom-element="amp-stream-gallery" src="https://cdn.ampproject.org/v0/amp-stream-gallery-0.1.js"></script>
<script async custom-element="amp-stream-gallery" src="https://cdn.ampproject.org/v0/amp-stream-gallery-0.1.js"></script> <link rel="stylesheet" href="https://cdn.ampproject.org/v0/amp-stream-gallery-0.1.css">
用法
一个流式图库,用于沿水平轴一次显示多个相似的内容。要实现更自定义的 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-arrows
为 true
时,箭头始终显示为 "always"
。
always
:箭头始终显示。auto
:当轮播最近通过鼠标收到交互时,会显示箭头;而当轮播最近通过触摸收到交互时,则不显示箭头。在触摸设备首次加载时,会显示箭头,直到第一次交互。never
:箭头永远不会显示。
extra-space
可以是 "around"
或未定义。这决定了在轮播中显示计算出的可见幻灯片数量后,如何分配额外的空间。如果为 "around"
,则使用 justify-content: center
将空白均匀地分布在轮播周围;否则,对于 LTR 文档,空间将分配到轮播的右侧,对于 RTL 文档,空间将分配到轮播的左侧。
loop
可以是 true
或 false
,默认为 true
。当为 true 时,轮播将允许用户从第一项移动到最后一项,反之亦然。必须至少存在三个幻灯片才能发生循环。
outset-arrows
可以是 true
或 false
,默认为 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
可以是 start
或 center
。当开始对齐时,幻灯片的开始位置(例如,水平对齐时的左边缘)与轮播的开始位置对齐。当居中对齐时,幻灯片的中心与轮播的中心对齐。
snap
可以是 true
或 false
,默认为 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>
如果您想要更多地自定义箭头按钮,可以使用 next
和 prev
操作。例如,如果您想将按钮放置在轮播下方,并使用“上一个”和“下一个”字样而不是默认位置中的字样,您可以使用以下 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