scroll-target-group

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

scroll-target-group CSS 属性指定一个元素是否为滚动标记组容器。

语法

css
/* Keyword values */
scroll-target-group: none;
scroll-target-group: auto;

/* Global values */
scroll-target-group: inherit;
scroll-target-group: initial;
scroll-target-group: revert;
scroll-target-group: revert-layer;
scroll-target-group: unset;

scroll-target-group 属性指定为以下关键字值之一:

none

该元素不是滚动标记组容器。

auto

该元素是滚动标记组容器。

描述

将元素的 scroll-target-group 设置为 auto,表示它是一个滚动标记组容器。这会将一组导航项组合在一起,允许用户在页面上的元素之间导航(例如轮播项或文章部分),并突出显示当前正在视图中的元素。

容器内带有片段标识符的任何 <a> 元素都会自动设置为滚动标记。滚动目标当前在视图中的锚点元素可以通过 :target-current 伪类进行样式设置。

scroll-target-groupscroll-marker-group 之间的区别

使用 scroll-target-group 创建的滚动标记组容器的行为与使用 scroll-marker-group 属性创建的容器非常相似,但有一些区别:

  • 使用 scroll-target-group,您必须创建自己的标记来表示滚动标记组容器和滚动标记,而 scroll-marker-group 会自动创建一组伪元素来表示容器(::scroll-marker-group)和标记(一个或多个 ::scroll-marker 实例)。这些伪元素会自动与它们生成的滚动容器建立预期的导航关联。使用 scroll-marker-group 可以更快地进行设置,因为您不需要使用自己的标记。然而,通过 scroll-target-group 创建自己的标记并将其设置为滚动标记组容器提供了更多的控制和灵活性。
  • 通过 scroll-target-group 指定为滚动标记的链接没有特殊的导航行为,而通过 scroll-marker-group 生成的标记会自动应用 tablist/tab 语义,这意味着它们在 Tab 键顺序中表现为单个项,用户可以使用箭头键在滚动标记之间移动。同样,scroll-marker-group 提供了有用的默认行为,但您可以灵活地为使用 scroll-target-group 指定的标记提供替代语义和行为。

正式定义

在数据库中未找到值!

正式语法

scroll-target-group = 
none |
auto

示例

scroll-target-group 的基本用法

此示例显示了一个页面,其中包含链接到不同部分的目录。

HTML

我们的标记包含一系列包含内容的 <section> 元素,以及一个使用有序列表(<ol>/<li>)和 <a> 元素创建的目录。

html
<nav id="toc">
  <ol>
    <li><a href="#intro">Introduction</a></li>
    <li><a href="#ch1">Chapter 1</a></li>
    <li><a href="#ch2">Chapter 2</a></li>
    <li><a href="#ch3">Chapter 3</a></li>
    <li><a href="#ch4">Chapter 4</a></li>
  </ol>
</nav>
<section id="intro" class="chapter">
  <h1>Prose of the century</h1>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla luctus
    aliquam dolor, eu lacinia lorem placerat vulputate. Duis felis orci,
    pulvinar id metus ut, rutrum luctus orci. Cras porttitor imperdiet nunc, at
    ultricies tellus laoreet sit amet.
  </p>
</section>
<section id="ch1" class="chapter">
  <h2>Chapter 1</h2>

  <!-- ... -->
</section>
<section id="ch2" class="chapter">
  <h2>Chapter 2</h2>

  <!-- ... -->
</section>

<!-- ... -->

CSS

为了简洁起见,我们省略了大部分样式。与此示例最相关的是,我们在 <ol> 上设置了 scroll-target-group: auto,将其转换为滚动标记组容器,并触发浏览器算法来计算在任何给定时间哪个 <a> 元素是 :target-current(即,哪个链接的目标当前在视图中)。然后,我们使用 red color:target-current 伪类设置样式,使其清晰可见。

css
ol {
  scroll-target-group: auto;
}

:target-current {
  color: red;
}

结果

尝试通过激活链接和滚动来导航。您会看到在每种情况下,红色高亮都会在链接之间移动,以匹配当前显示的章节。

此示例展示了如何使用 scroll-target-group 创建 CSS 轮播滚动标记。此示例的代码与我们的单页轮播示例类似;我们只在下面解释不同之处。

HTML

标记在定义每个页面的列表项上设置了 ID,并添加了一个有序列表,我们将使用 CSS 将其转换为滚动标记组容器。

html

CSS

我们通过在 <ol> 元素上设置 scroll-target-group 来创建滚动标记组容器和滚动标记。其余的样式代码非常相似,不同之处在于我们选择自己的元素(<ol><a>),而不是 ::scroll-marker-group::scroll-marker 伪元素。

我们通过在 :target-currenta:hovera:focus 状态上设置一些样式来完成代码,以指示当前显示的页面以及正在悬停/聚焦的链接。

css

结果

尝试通过以下三种方式进行导航:激活滚动标记链接,水平滚动,或按下两侧的滚动按钮。您会看到在每种情况下,高亮都会在链接之间移动,以匹配当前显示的章节。

规范

规范
CSS Overflow Module Level 5
# scroll-target-group

浏览器兼容性

另见