scroll-marker-group
scroll-marker-group
CSS 属性控制 滚动容器 元素是否生成 ::scroll-marker-group
伪元素。如果存在,该属性还指定滚动标记组在默认视觉和 Tab 键顺序中应放置在滚动组容器内容的 before
(之前)或 after
(之后)。
注意:要从一个包含一组 <a>
元素的现有元素创建滚动标记组容器,请使用 scroll-target-group
属性。阅读有关这两种属性的行为差异。
语法
/* Single values */
scroll-marker-group: before;
scroll-marker-group: after;
scroll-marker-group: none;
/* Global values */
scroll-marker-group: inherit;
scroll-marker-group: initial;
scroll-marker-group: revert;
scroll-marker-group: revert-layer;
scroll-marker-group: unset;
值
after
-
一个
::scroll-marker-group
伪元素作为滚动容器子 DOM 元素的同级元素生成,紧接在它们和任何生成的::scroll-button()
伪元素之前。它出现在容器的 Tab 键顺序和布局框顺序的末尾(但不是 DOM 结构)。 before
-
一个
::scroll-marker-group
伪元素作为滚动容器子 DOM 元素的同级元素生成,紧接在它们和任何生成的::scroll-button()
伪元素之前。滚动标记组出现在容器的 Tab 键顺序和布局框顺序的开头。 none
-
元素上不会生成
::scroll-marker-group
伪元素。这是默认值。
注意:作为可访问性最佳实践,将滚动标记组容器的视觉渲染位置与 Tab 键顺序匹配。当使用应用于 ::scroll-marker-group
的样式将标记组定位在内容开头时,使用 before
将其放在 Tab 键顺序的开头。当将组定位在内容的末尾时,使用 after
将其放在 Tab 键顺序的末尾。
正式定义
在数据库中未找到值!正式语法
scroll-marker-group =
none |
before |
after
示例
请参阅创建 CSS 轮播,了解使用 scroll-marker-group
属性的完整示例。
滚动标记的放置
在此示例中,我们演示了 scroll-marker-group
属性的三个值。
HTML
我们有一个基本的 HTML <ul>
列表,包含几个 <li>
列表项。
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
<li>Item 7</li>
<li>Item 8</li>
</ul>
CSS
我们通过将 display
设置为 flex
,将我们的 <ul>
转换为轮播,创建一行不换行的 <li>
元素。overflow-x
属性设置为 auto
,这意味着如果项目在 x 轴上溢出其容器,内容将水平滚动。然后我们将 <ul>
转换为一个 滚动捕捉容器,确保当容器使用 mandatory
的 scroll-snap-type
值滚动时,项目总是捕捉到位。
我们使用 scroll-marker-group
属性创建一个滚动标记组容器,将组放置在所有内容之后。
ul {
display: flex;
gap: 4vw;
padding-left: 0;
margin: 32px 0;
overflow-x: auto;
overscroll-behavior-x: contain;
scroll-snap-type: x mandatory;
scroll-marker-group: after;
}
接下来,我们使用 flex
属性将 <li>
元素样式化为容器宽度的 33%
。scroll-snap-align
的 start
值使得当内容滚动时,最左侧可见项的左侧边缘捕捉到容器的左边缘。
li {
list-style-type: none;
background-color: #eeeeee;
flex: 0 0 33%;
scroll-snap-align: start;
text-align: center;
line-height: 5;
}
然后我们使用 ::scroll-marker
伪元素为每个列表项创建一个带有红色边框的正方形标记,并对 ::scroll-marker-group
伪元素应用样式,以将滚动标记排成一行,每个标记之间有 0.2em
的间隙。
li::scroll-marker {
content: " ";
border: 1px solid red;
height: 1em;
width: 1em;
}
::scroll-marker-group {
display: flex;
gap: 0.2em;
}
最后,为确保良好的用户体验,我们使用 :target-current
伪类定位当前滚动元素的标记,并将其样式与其他标记不同。
::scroll-marker:target-current {
background: red;
}
结果
注意滚动标记组容器的放置位置。查看 before
与 after
的键盘 Tab 键顺序有何不同,并注意当值设置为 none
时组如何消失。
规范
规范 |
---|
CSS Overflow Module Level 5 # scroll-marker-group-property |
浏览器兼容性
加载中…
另见
scroll-target-group
::scroll-button()
::scroll-marker-group
::scroll-marker
:target-current
- 创建 CSS 轮播
- CSS overflow 模块
- CSS 轮播库 via chrome.dev (2025)