AMP

重要提示:此文档不适用于您当前选择的格式 故事

amp-base-carousel

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

描述

沿水平轴或垂直轴显示多个相似的内容。

 

必需脚本

<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> 的属性,以便基于媒体查询使用不同的选项。

配置选项

可见幻灯片数量

混合长度

truefalse,默认为 false。当为 true 时,对每个幻灯片使用现有宽度(或水平时的现有高度)。这允许使用具有不同宽度的幻灯片的轮播图。

可见计数

一个数字,默认为 1。确定在给定时间应显示多少张幻灯片。可以使用小数值来使附加幻灯片的一部分可见。当 mixed-lengthtrue 时,此选项将被忽略。

前进计数

一个数字,默认为 1。确定当使用上一个或下一个箭头前进时,轮播图将前进多少张幻灯片。在指定 visible-count 属性时,此属性很有用。

自动前进

自动前进

truefalse,默认为 false。根据延迟自动将轮播图前进到下一张幻灯片。如果用户手动更改幻灯片,则会自动停止前进。请注意,如果未启用 loop,则当到达最后一项时,自动前进将向后移动到第一项。

自动前进计数

一个数字,默认为 1。确定自动前进时,轮播图将前进多少张幻灯片。在指定 visible-count 属性时,此属性很有用。

自动前进间隔

一个数字,默认为 1000。指定轮播图连续自动前进之间的时间量(以毫秒为单位)。

自动前进循环

一个数字,默认为 。轮播图在停止之前应前进浏览幻灯片的次数。

吸附

吸附

truefalse,默认为 true。确定在滚动时,轮播图是否应吸附到幻灯片上。

吸附对齐

startcenter。当开始对齐时,幻灯片的开始位置(例如,水平对齐时的左边缘)与轮播图的开始位置对齐。当中心对齐时,幻灯片的中心与轮播图的中心对齐。

吸附依据

一个数字,默认为 1。这确定了吸附的粒度,在使 visible-count 时很有用。此

杂项

控件

"always""auto""never",默认为 "auto"。这确定了是否以及何时显示上一个/下一个导航箭头。注意:当 outset-arrowstrue 时,将始终显示箭头 "always"

  • always:始终显示箭头。
  • auto:当轮播图最近通过鼠标接收交互时显示箭头,当轮播图最近通过触摸接收交互时不显示箭头。在触摸设备上首次加载时,将显示箭头,直到首次交互。
  • never:从不显示箭头。
幻灯片

一个数字,默认为 0。这确定了轮播图中显示的初始幻灯片。可以将其与 amp-bind 一起使用以控制当前显示的幻灯片。

循环

truefalse,省略时默认为 false。当为 true 时,轮播图将允许用户从第一项返回到最后一项,反之亦然。必须至少存在 visible-count 三倍的幻灯片,才能进行循环。

水平

truefalse,默认为 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>

如果您希望对箭头按钮进行更多自定义,则可以使用 nextprev 操作。例如,如果您想在轮播图下放置按钮,并使用“上一个”和“下一个”字样,而不是将其放置在默认位置,则可以使用以下 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