scroll-target-group

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Thuộc tính scroll-target-group CSS xác định liệu một phần tử có phải là vùng chứa nhóm scroll marker hay không.

Cú pháp

css
/* Giá trị từ khóa */
scroll-target-group: none;
scroll-target-group: auto;

/* Giá trị toàn cục */
scroll-target-group: inherit;
scroll-target-group: initial;
scroll-target-group: revert;
scroll-target-group: revert-layer;
scroll-target-group: unset;

Thuộc tính scroll-target-group được chỉ định là một trong các giá trị từ khóa sau:

Giá trị

none

Phần tử không phải là vùng chứa nhóm scroll marker.

auto

Phần tử là vùng chứa nhóm scroll marker.

Mô tả

Đặt scroll-target-group: auto trên một phần tử biểu thị nó là vùng chứa nhóm scroll marker. Điều này nhóm các mục điều hướng lại với nhau cho phép người dùng điều hướng giữa các phần tử trên trang (chẳng hạn như các mục carousel hoặc các phần bài viết) và làm nổi bật phần tử đang được hiển thị.

Bất kỳ phần tử <a> nào có định danh fragment bên trong vùng chứa đều tự động được đặt làm scroll marker. Phần tử anchor có scroll target đang trong tầm nhìn có thể được định kiểu thông qua lớp giả :target-current.

Sự khác biệt giữa scroll-target-groupscroll-marker-group

Các vùng chứa nhóm scroll marker được tạo bằng scroll-target-group hoạt động tương tự như các vùng chứa được tạo bằng thuộc tính scroll-marker-group, với một số khác biệt:

  • Với scroll-target-group, bạn phải tự tạo markup để đại diện cho vùng chứa nhóm scroll marker và các scroll marker, trong khi scroll-marker-group tự động tạo một tập hợp pseudo-element để đại diện cho vùng chứa (::scroll-marker-group) và các marker (một hoặc nhiều instance của ::scroll-marker). Những pseudo-element này tự động có các liên kết điều hướng dự kiến với scroll container mà chúng được tạo ra. Sử dụng scroll-marker-group cung cấp thiết lập nhanh hơn vì bạn không cần sử dụng markup của riêng mình. Tuy nhiên, việc tạo markup của riêng bạn và đặt nó làm vùng chứa nhóm scroll marker thông qua scroll-target-group cung cấp nhiều khả năng kiểm soát và linh hoạt hơn.
  • Các liên kết được chỉ định là scroll marker thông qua scroll-target-group không có hành vi điều hướng đặc biệt, trong khi các marker được tạo thông qua scroll-marker-group tự động có ngữ nghĩa tablist/tab áp dụng cho chúng, có nghĩa là chúng hoạt động như một mục đơn trong thứ tự tab và người dùng có thể di chuyển giữa các scroll marker bằng các phím mũi tên. Một lần nữa, scroll-marker-group cung cấp hành vi mặc định hữu ích, nhưng bạn có tính linh hoạt khi cung cấp ngữ nghĩa và hành vi thay thế cho các marker được chỉ định bằng scroll-target-group.

Định nghĩa hình thức

Initial valuenone
Applies toall elements
Inheritedno
Computed valueas specified
Animation typediscrete

Cú pháp hình thức

scroll-target-group = 
none |
auto

Ví dụ

Sử dụng cơ bản scroll-target-group

Ví dụ này hiển thị một trang có mục lục liên kết đến các phần khác nhau.

HTML

Markup của chúng ta có một loạt phần tử <section> chứa nội dung và mục lục được tạo bằng danh sách có thứ tự (<ol>/<li>) và các phần tử <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

Chúng ta đã ẩn hầu hết các kiểu dáng để ngắn gọn. Quan trọng nhất trong ví dụ này, chúng ta đã đặt scroll-target-group: auto trên <ol> để biến nó thành vùng chứa nhóm scroll marker và kích hoạt thuật toán của trình duyệt để tính toán phần tử <a> nào là :target-current tại bất kỳ thời điểm nào (tức là liên kết nào có mục tiêu đang trong tầm nhìn). Sau đó, chúng ta định kiểu lớp giả :target-current với màu red color để nó nổi bật rõ ràng.

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

:target-current {
  color: red;
}

Kết quả

Thử điều hướng bằng cách kích hoạt các liên kết và bằng cách cuộn. Bạn sẽ thấy rằng trong mỗi trường hợp, phần tô đỏ di chuyển giữa các liên kết để khớp với phần đang được hiển thị.

Ví dụ này hiển thị cách tạo các scroll marker CSS carousel bằng scroll-target-group. Mã cho ví dụ này tương tự như ví dụ Carousel với các trang đơn của chúng ta; chúng ta chỉ giải thích sự khác biệt bên dưới.

HTML

Markup có ID được đặt trên các mục danh sách xác định mỗi trang và một danh sách có thứ tự được thêm vào mà chúng ta sẽ biến thành vùng chứa nhóm scroll marker bằng CSS.

html

CSS

Chúng ta tạo vùng chứa nhóm scroll marker và các scroll marker bằng cách đặt scroll-target-group trên phần tử <ol>. Phần còn lại của mã để định kiểu cho các phần tử này rất tương tự, ngoại trừ chúng ta đang nhắm mục tiêu các phần tử do chúng ta chọn (<ol><a>) thay vì các pseudo-element ::scroll-marker-group::scroll-marker.

Chúng ta hoàn thiện mã bằng cách đặt một số kiểu dáng trên các trạng thái :target-current, a:hovera:focus để chỉ ra trang đang được hiển thị và liên kết nào đang được di chuột/focus.

css

Kết quả

Thử điều hướng theo ba cách sau: bằng cách kích hoạt các liên kết scroll marker, bằng cách cuộn ngang hoặc bằng cách nhấn các nút cuộn ở hai bên. Bạn sẽ thấy rằng trong mỗi trường hợp, phần tô sáng di chuyển giữa các liên kết để khớp với phần đang được hiển thị.

Thông số kỹ thuật

Specification
CSS Overflow Module Level 5
# scroll-target-group

Khả năng tương thích trình duyệt

Xem thêm