重要提示:此文档不适用于您当前选择的格式 广告!
amp-base-carousel
描述
沿水平轴或垂直轴显示多个相似的内容。
必需的脚本
<script async custom-element="amp-base-carousel" src="https://cdn.ampproject.org/v0/amp-base-carousel-0.1.js"></script>
用法
一个通用的轮播,用于沿水平或垂直轴显示多个相似的内容。
amp-base-carousel
组件的每个直接子元素都被视为轮播中的一个项目。 这些节点中的每一个也可能具有任意的 HTML 子元素。
轮播包含任意数量的项目,以及可选的导航箭头,用于前进或后退一个项目。
如果用户滑动或使用可自定义的箭头按钮,轮播会在项目之间前进。
属性
媒体查询
可以配置 <amp-base-carousel>
的属性,以根据 媒体查询使用不同的选项。
配置选项
可见幻灯片的数量
混合长度
true
或 false
,默认为 false
。当为 true 时,对每个幻灯片使用现有的宽度(或高度,当水平方向时)。 这允许使用具有不同宽度的幻灯片的轮播。
可见计数
一个数字,默认为 1
。确定在给定时间应显示多少张幻灯片。 可以使用小数值来显示部分额外幻灯片。 当 mixed-length
为 true
时,将忽略此选项。
前进计数
一个数字,默认为 1
。确定使用上一个或下一个箭头前进时,轮播将前进多少张幻灯片。 当指定 visible-count
属性时,此选项很有用。
自动前进
自动前进
true
或 false
,默认为 false
。基于延迟自动将轮播前进到下一张幻灯片。 如果用户手动更改幻灯片,则自动前进将停止。 请注意,如果未启用 loop
,则当到达最后一项时,自动前进将向后移动到第一项。
自动前进计数
一个数字,默认为 1
。确定自动前进时轮播将前进多少张幻灯片。 当指定 visible-count
属性时,此选项很有用。
自动前进间隔
一个数字,默认为 1000
。指定轮播后续自动前进之间的时间量(以毫秒为单位)。
自动前进循环
一个数字,默认为 ∞
。轮播在停止之前应前进到幻灯片的次数。
捕捉
捕捉
true
或 false
,默认为 true
。确定轮播在滚动时是否应捕捉到幻灯片。
捕捉对齐
start
或 center
。当起始对齐时,幻灯片的起始位置(例如,水平对齐时的左边缘)与轮播的起始位置对齐。当中心对齐时,幻灯片的中心与轮播的中心对齐。
捕捉方式
一个数字,默认为 1
。这决定了捕捉的粒度,并且在使用 visible-count
时很有用。这
其他
控件
"always"
、"auto"
或 "never"
,默认为 "auto"
。这确定何时显示上一个/下一个导航箭头。 注意:当 outset-arrows
为 true
时,箭头会 "always"
显示。
always
:箭头始终显示。auto
:当轮播最近通过鼠标收到交互时会显示箭头,而当轮播最近通过触摸收到交互时不会显示箭头。 在触摸设备首次加载时,会显示箭头,直到首次交互。never
:箭头永远不显示。
幻灯片
一个数字,默认为 0
。这确定了轮播中显示的初始幻灯片。 这可以与 amp-bind
一起使用来控制当前显示的幻灯片。
循环
true
或 false
,省略时默认为 false
。当为 true 时,轮播将允许用户从第一项返回到最后一项,反之亦然。 必须存在至少三倍于 visible-count
的幻灯片才能进行循环。
水平
true
或 false
,默认为 true
。当为 true 时,轮播将水平布局,用户可以向左和向右滑动。当为 false 时,轮播将垂直布局,用户可以向上和向下滑动。
通用属性
此元素包括扩展到 AMP 组件的通用属性。
操作
下一个
将轮播向前移动 advance-count
张幻灯片。
上一个
将轮播向后移动 advance-count
张幻灯片。
跳转到幻灯片
将轮播移动到 index
参数指定的幻灯片。
活动
幻灯片更改
当轮播显示的索引发生更改时,会触发此事件。新索引可通过 event.index
获得。
样式
您可以使用 amp-base-carousel
元素选择器自由设置轮播样式。
自定义箭头按钮
可以通过传入您自己的自定义标记来自定义箭头按钮。例如,您可以使用以下 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-base-carousel …> <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-base-carousel>
如果您想要对箭头按钮进行更多自定义,可以使用 next
和 prev
操作。 例如,如果您想将按钮放置在轮播下方,并使用“上一个”和“下一个”字词而不是将它们放在默认位置,则可以使用以下 HTML
<amp-base-carousel id="carousel-1" …> … <div slot="next-arrow"></div> <div slot="prev-arrow"></div> </amp-carousel> <button on="tap:carousel-1.prev()">Previous</button> <button on="tap:carousel-1.next()">Next</button>
使用说明
RTL
<amp-base-carousel>
当前需要您告知它何时处于从右到左 (rtl) 的上下文中(例如阿拉伯语、希伯来语页面)。 虽然轮播通常可以在没有此设置的情况下工作,但可能存在一些错误。 您可以按如下方式告知轮播应以 rtl
运行
<amp-base-carousel dir="rtl" …> … </amp-base-carousel>
如果轮播处于 RTL 上下文中,并且您希望轮播以 LTR 运行,则可以在轮播上显式设置 dir="ltr"
。
幻灯片布局
当不指定 mixed-lengths
时,幻灯片会由轮播自动调整大小。 您应该为幻灯片提供 layout="flex-item"
<amp-base-carousel …> <amp-img layout="flex-item" src="…"></amp-img> </amp-base-carousel>
当轮播水平布局时,幻灯片的默认高度为 100%
。 可以使用 CSS 或通过使用 layout="fixed-height"
轻松更改此设置。 当指定高度时,幻灯片将在轮播内垂直居中。
如果您想水平居中您的幻灯片内容,您将需要创建一个包装元素,并使用它来居中内容。
可见幻灯片的数量
当使用 visible-slides
响应媒体查询更改可见幻灯片的数量时,您可能需要更改轮播本身的纵横比以匹配新的可见幻灯片数量。 例如,如果您想一次显示三张幻灯片,纵横比为 1 比 1,则轮播本身的纵横比为 3 比 1。 同样,如果一次显示四张幻灯片,则纵横比为 4 比 1。 此外,当更改 visible-slides
时,您可能需要更改 advance-count
。
<!-- Using an aspect ratio of 3:2 for the slides in this example. --> <amp-base-carousel layout="responsive" width="3" height="1" heights="(min-width: 600px) calc(100% * 4 * 3 / 2), calc(100% * 3 * 3 / 2)" visible-count="(min-width: 600px) 4, 3" advance-count="(min-width: 600px) 4, 3" > <amp-img layout="flex-item" src="…"></amp-img> … </amp-base-carousel>
验证
请参阅 AMP 验证器规范中的 amp-base-carousel 规则。
您已经阅读过此文档十几次,但它并没有真正涵盖您的所有问题? 也许其他人也有同感:在 Stack Overflow 上联系他们。
转到 Stack Overflow 发现错误或缺少功能?AMP 项目强烈鼓励您的参与和贡献!我们希望您能成为我们开源社区的长期参与者,但也欢迎您针对自己特别感兴趣的问题做出一次性的贡献。
前往 GitHub