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
/* 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ị
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-group và scroll-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 khiscroll-marker-grouptự độ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ụngscroll-marker-groupcung 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 quascroll-target-groupcung 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-groupkhông có hành vi điều hướng đặc biệt, trong khi các marker được tạo thông quascroll-marker-grouptự động có ngữ nghĩatablist/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-groupcung 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ằngscroll-target-group.
Định nghĩa hình thức
| Initial value | none |
|---|---|
| Applies to | all elements |
| Inherited | no |
| Computed value | as specified |
| Animation type | discrete |
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>.
<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.
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ị.
CSS carousel với scroll marker scroll-target-group
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.
<h1>CSS carousel single item per page</h1>
<ul>
<li id="page1">
<h2>Page 1</h2>
</li>
<li id="page2">
<h2>Page 2</h2>
</li>
<li id="page3">
<h2>Page 3</h2>
</li>
<li id="page4">
<h2>Page 4</h2>
</li>
</ul>
<ol>
<li><a href="#page1">1</a></li>
<li><a href="#page2">2</a></li>
<li><a href="#page3">3</a></li>
<li><a href="#page4">4</a></li>
</ol>
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> và <a>) thay vì các pseudo-element ::scroll-marker-group và ::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:hover và a:focus để chỉ ra trang đang được hiển thị và liên kết nào đang được di chuột/focus.
ol {
position: absolute;
position-anchor: --my-carousel;
top: calc(anchor(bottom) - 90px);
justify-self: anchor-center;
display: flex;
justify-content: center;
gap: 20px;
list-style-type: none;
padding: 0;
scroll-target-group: auto;
}
ol a {
width: 28px;
height: 28px;
display: inline-block;
text-align: center;
text-decoration: none;
padding-top: 4px;
color: black;
background-color: transparent;
border: 2px solid black;
border-radius: 50%;
}
ol a:hover,
ol a:focus,
:target-current {
background-color: black;
color: white;
}
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
scroll-marker-group- Pseudo-element
::scroll-marker-groupvà::scroll-marker - Lớp giả
:target-current,:target-beforevà:target-after - Tạo CSS carousel
- Module CSS overflow