发布时间:2025 年 3 月 20 日
从 Chrome 135 开始,您可以使用 CSS Overflow 5 规范中专为创建滚动和轮播界面而设计的功能。
本文概要介绍了使用这些新功能(无需 JavaScript)实现的许多不同的滚动和轮播界面体验。观看以下视频,了解您现在可以实现哪些功能。
视频中展示了滚动按钮、滚动标记、滚动驱动型动画、scroll-state() 查询、:has()、网格、锚点等元素的协同运作。
更令人印象深刻的是无障碍功能方面的故事。
由于工程团队和无障碍团队通力合作,浏览器可以处理轮播界面最佳实践。要想制作比这更易于访问的轮播界面,难度非常高。

认识 ::scroll-button()
和 ::scroll-marker()
轮播界面是一个滚动区域,最多可添加两个界面功能:按钮和标记。
在 CSS 轮播界面功能的版本 1 中,按钮和标记是通过 CSS 创建的。浏览器会将这些元素作为同级兄弟元素放置在适当的标签页顺序中,并维护其状态。这样可以更轻松地开发无障碍轮播界面。
滚动按钮
浏览器提供的有状态、交互式滚动功能<button>
元素,有助于访问内容,并在按下时滚动滚动区域的 85%。滚动标记
浏览器提供的有状态导航<a>
元素,有助于访问滚动区域中任何请求的项的内容。
本文的其余部分将演示如何使用这些新功能构建轮播界面。
从滚动条开始
您可以将按钮和标记添加到您网站上的任何滚动区域。
以下 CSS 会创建一个基本滚动区域,以便在后续步骤中添加按钮和标记。轮播界面不需要滚动捕获,但在本例中使用了滚动捕获。轮播界面也适用于垂直滚动条和双向滚动条。
.carousel {
overflow-x: auto;
scroll-snap-type: x mandatory;
> li {
scroll-snap-align: center;
}
}
使用 ::scroll-button()
添加滚动按钮
滚动条周围可能已经有滚动按钮,具体取决于您的操作系统。内置滚动条按钮往往会推动滚动区域,而 CSS 滚动按钮会滚动滚动区域的 85%。
对于同时仅显示一个全宽项且具有滚动贴靠点的轮播界面,此值会按项显示。对于一次可显示多个项的长列表,它会滚动到几乎整页。
如需使用 CSS 添加滚动按钮,请执行以下操作:
- 像添加其他伪元素一样添加它们,并使用选择器:
.carousel::scroll-button(right)
表示向右滚动的按钮。 - 指定
content
,并附带可选的无障碍后备替代文本。
浏览器会创建包含您内容的真实按钮,并将其作为滚动条的兄弟元素。现在,您可以根据需要自由地排列这些按钮、设置其样式或anchor()
它们。以下 CSS 会创建两个按钮,一个用于向左滚动按钮,另一个用于向右滚动按钮。
.carousel {
…
&::scroll-button(left) {
content: "⬅" / "Scroll Left";
}
&::scroll-button(right) {
content: "⮕" / "Scroll Right";
}
&::scroll-button(*)::focus-visible {
outline-offset: 5px;
}
}
使用 ::scroll-marker()
添加滚动标记
与滚动条滑块元素类似,CSS 滚动标记可以提示轮播界面的大小,同时提供快速移动到末尾或开头的功能。CSS 滚动标记与滚动条不同,因为每个标记都是一个链接,可以表示滚动条中的任何项。
例如,电视连续剧的剧季就是一个很好的例子。不要为 10 个剧集分别创建标记,而是创建 2 个指向章节开头的标记。
请注意,这些标记不是圆点,而是使用了其伪元素的 content: "Season 1"
属性。标记也可以是缩略图,通常用于电子商务网站或以照片为重点的网站中的图库轮播界面。
标记类似于页内 <a>
链接,但具有一些特殊功能:
- 其中包括一个
:target-current
状态,用于表示标记在视野内或已固定。 - 包含键盘导航,并且其行为类似于 focusgroup。
- 包含屏幕阅读器体验,并以标签页列表的形式生成报告。
按照以下步骤为滚动条中重要的地图注点添加标记:
- 将
scroll-marker-group
的放置方式定义为before
或after
。 - 使用选择器
.carousel .point-of-interest::scroll-marker
选择地图注点。 - 指定
content
,并附上可选的无障碍后备替代文本;数字、文本、空白或图片。
浏览器会创建所有标记,并将其放入标记组容器中。此示例会为每个 <li>
创建一个空白标记,以便为每个项创建一个标记圆点。
.carousel {
…
scroll-marker-group: after;
> li::scroll-marker {
content: ' ';
&:target-current {
background: var(--accent);
}
}
}
标记的容器元素称为 ::scroll-marker-group
,它会作为滚动条的兄弟元素创建,就像滚动按钮一样。您可以为此容器设置样式,并将其放置在所需的位置。
同时使用标记和按钮
将这两者结合起来,用户体验看起来就像轮播界面,但具有以下优势:
- 在停用 JavaScript 的情况下也能正常运行。
- 不进行水合或延迟调整大小(可降低 CLS)。
- 支持各种滚动动画和触发器。
- 包括无障碍功能。
- 支持触控、鼠标和键盘。
工作量更少,覆盖面更广,速度更快。
资源
本文主要将这些功能称为“轮播界面”,但它们的功能和实用性远远超出了轮播界面的使用场景。如需全面了解这些新功能的潜力,请试用轮播式图库,并查看其他组件,例如滚动条、标签页和幻灯片。
- Web 标准
- Chrome
轮播界面配置器
对于视觉和互动学习者,请尝试使用轮播界面配置器。
它提供了一些开关,例如滚动按钮,启用后,所显示的轮播界面中会立即显示按钮以及所使用的关联 CSS。

其中还包含与轮播界面相关的更高级概念的示例:
轮播式图库
展示空间:对于好奇这些功能的使用范围的用户,可解答“它能否执行 X 操作?”等问题。每个演示均基于互联网上找到的用例。每个演示都展示了如何使用滚动驱动型动画、scroll-state() 查询等来协调这些按钮和标记。
有趣的是,整个网站都没有使用 JavaScript。

这些示例从简单易用到功能丰富,应有尽有。浏览该库应该能给人启发、让人放心,当然还能检查代码以供使用。查找并检查 @layer utilities
,了解有助于您制作轮播界面的实用程序。
进一步操作
我们很自豪地宣布,这些功能与所有 HTML 和 CSS 的集成效果非常出色。CSS 轮播界面具有出色的无障碍功能。CSS 轮播界面的性能优于任何 JavaScript 解决方案。CSS 轮播界面的用户体验自然、流畅且丰富。不过,您可以通过多种方式提高排名。
自带元素
我们正在努力为您提供用于滚动按钮和标记的自定义组件。这意味着,您可以提供自己的 <a>
标记,其中包含图标等丰富内容。您还可以使用 Tailwind 构建自己的多层按钮。
周期性滚动
许多轮播界面在到达末尾时会循环播放,就像嘉年华会中的旋转木马一样。我们已注意到这个问题,并打算为其提供平台解决方案。
希望您喜欢此功能。我们期待所有“JavaScript 已停用”的 Web 用户都能获得良好的滚动体验,并期待内置轮播界面通过更好的时间安排生命周期来减少 CLS。
减少工作量、提供出色的用户体验、提升广告效果。