::scroll-marker-group

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

::scroll-marker-group CSS 伪元素滚动容器内部生成,并包含滚动容器后代上生成的任何 ::scroll-marker 伪元素。

语法

css
::scroll-marker-group {
  /* ... */
}

描述

滚动容器的 ::scroll-marker-group 伪元素代表一个滚动标记组容器。这是一个自动包含其自身或其后代上生成的任何 ::scroll-marker 伪元素的容器。这使得它们可以作为一个组进行定位和样式化。这个伪元素通常在创建 CSS 轮播图以提供滚动位置指示器时使用。各个滚动标记可用于导航到其关联的内容项。

滚动容器的 scroll-marker-group 属性必须设置为非 none 的值,才能生成 ::scroll-marker-group 伪元素。scroll-marker-group 的值决定了滚动标记组容器在轮播图的 Tab 键顺序和布局盒顺序中的位置(但不是 DOM 结构)——before 将其放在开头,而 after 将其放在末尾。

备注: 另外,也可以使用 scroll-target-group 从一个包含一组 <a> 元素的现有元素创建滚动标记组容器。

作为无障碍最佳实践,应将滚动标记组容器的视觉渲染位置与 Tab 键顺序相匹配。当将该组定位在内容开头时,使用 before 将其放在 Tab 键顺序的开头。当将该组定位在内容末尾时,使用 after 将其放在 Tab 键顺序的末尾。

当使用 scroll-marker-group 属性在滚动容器上创建滚动标记组容器时,该滚动容器会以 tablist/tab 语义进行渲染。你可以用键盘 Tab 键切换到它,然后使用左、右(或上、下)光标键在不同的“页面”之间移动,这也会如预期般改变相关滚动标记和滚动按钮的状态。滚动标记之间也可以像预期的那样正常地用 Tab 键切换。

示例

有关使用 ::scroll-marker 伪元素的其他示例,请参阅创建 CSS 轮播图

此演示是一个单页轮播图,每个项目都占据整个页面。我们加入了滚动标记,以便用户可以通过点击标记导航到任何页面。

HTML

HTML 包含一个无序列表,每个列表项包含一些示例内容。

html

CSS

我们首先通过将 display 设置为 flex,将 <ul> 转换为轮播图,从而创建一行不换行的 <li> 元素。将 overflow-x 属性设置为 auto,意味着如果项目在 x 轴上溢出其容器,内容将水平滚动。然后,我们通过设置 scroll-snap-type 值为 mandatory,将 <ul> 转换为滚动捕捉容器,确保在容器滚动时项目总是能捕捉到位。

css

接下来,我们为 <li> 元素设置样式,使用 flex 属性使它们的宽度为容器的 100%scroll-snap-align 的值为 start,这使得当内容滚动时,最左侧可见项的左侧会捕捉到容器的左边缘。

css

接下来,列表的 scroll-marker-group 属性被设置为 after,因此 ::scroll-marker-group 伪元素在 Tab 键顺序和布局盒顺序中被放置在列表的 DOM 内容之后;这意味着它位于滚动按钮之后。

css

接下来,列表的 ::scroll-marker-group 伪元素使用 flexbox 进行布局,其 justify-content 值为 centergap20px,这样它的子元素(::scroll-marker 伪元素)就能在 ::scroll-marker-group 内部居中,并且每个标记之间有间距。

css

接下来,对滚动标记本身进行样式设置。通过设置 widthheightbackground-colorborderborder-radius 来处理每个标记的外观,但我们还需要为 content 属性设置一个非 none 的值,以便它们能够真正生成。

css

备注: 生成的内容默认为行内元素;我们可以对滚动标记应用 widthheight,因为它们被布局为 flex 项。

最后,使用 :target-current 伪类来选择与当前可见“页面”对应的滚动标记,以高亮显示用户已滚动浏览内容的进度。在本例中,我们将其 background-color 设置为 black,使其样式为一个实心圆。

css

结果

使用锚点定位来定位滚动标记组容器

这个例子扩展了前一个例子,演示了如何使用CSS 锚点定位来相对于轮播图定位滚动标记组容器。

CSS

列表的 ::scroll-marker-group 伪元素通过 CSS 锚点定位相对于轮播图进行定位,方法是为该组设置一个与 <ul>anchor-name 匹配的 position-anchor 值。然后,我们通过设置一个包含 anchor() 函数的 top 值,在块方向上相对于滚动容器定位该组。我们还添加了一个 justify-self 值为 anchor-center,这会在内联方向上将该组对齐到滚动容器的中心。

css

结果

规范

规范
CSS Overflow Module Level 5
# scroll-marker-group-pseudo

浏览器兼容性

另见