CSS scroll snap
Module CSS scroll snap cung cấp các thuộc tính cho phép bạn kiểm soát hành vi panning và cuộn bằng cách định nghĩa các snap position. Nội dung có thể snap vào vị trí khi người dùng cuộn qua nội dung tràn trong một scroll container, tạo ra khả năng phân trang và định vị cuộn.
Module này bao gồm các thuộc tính scroll-padding của scroll container để điều chỉnh vùng xem tối ưu khi paging trong các thao tác scroll-into-view. Nó cũng bao gồm scroll-margin và scroll-alignment, được đặt trên các phần tử con của scroll container, để điều chỉnh vùng hiển thị của các phần tử con khi chúng được cuộn vào view, cùng với một thuộc tính để buộc cuộn dừng lại trên từng phần tử con.
Scroll snap hoạt động
Để xem scroll snapping hoạt động trong ô bên dưới, hãy cuộn lên-xuống và trái-phải qua lưới gồm 45 ô được đánh số trong viewport có thể cuộn. Nhấp "Play" trong ví dụ bên dưới để xem hoặc chỉnh sửa source trong MDN Playground:
Với scroll snap, một trong các ô được đánh số mà bạn cuộn đến sẽ snap vào vị trí. CSS ban đầu làm cho ô được đánh số snap vào giữa viewport. Dùng các thanh trượt để thay đổi vị trí snap theo block và inline.
Sử dụng các thuộc tính snap, bạn có thể cho phép hoặc chặn cuộn qua một phần tử — ô được đánh số trong trường hợp này. Chọn hộp kiểm "Prevent scrolling past boxes" để buộc tất cả các hành động cuộn chỉ giới hạn cuộn đến ô liền kề.
Để so sánh scroll snapping với cuộn thông thường, hãy chọn hộp kiểm "disable snapping" và thử cuộn lại.
Tham chiếu
>Thuộc tính trên container
Thuộc tính trên phần tử con
Sự kiện
scrollsnapchangeExperimentalscrollsnapchangingExperimental
Interface
SnapEventExperimentalSnapEvent.snapTargetBlockExperimentalSnapEvent.snapTargetInlineExperimental
Hướng dẫn
- Khái niệm cơ bản của CSS scroll snap
-
Tổng quan và ví dụ về các tính năng CSS scroll snap.
- Sử dụng scroll snap events
-
Hướng dẫn sử dụng các sự kiện scroll snap
scrollsnapchangingvàscrollsnapchangeđược kích hoạt khi trình duyệt xác định một snap target mới đang chờ xử lý hoặc đã được chọn.
Khái niệm liên quan
- Pseudo-class
:target - Thuộc tính CSS
overflow - Phương thức
scroll()của Element - Phương thức
scrollBy()của Element - Phương thức
scrollIntoView()của Element - Phương thức
scrollTo()của Element - Sự kiện
scrollcủa Element - Sự kiện
scrollendcủa Element - ARIA role
scrollbar - Thuật ngữ Scroll container
Đặc tả
| Specification |
|---|
| CSS Scroll Snap Module Level 1> |
| CSS Scroll Snap Module Level 2> |
Xem thêm
- Module CSS overflow
- Module CSS scrollbars styling
- Module CSS scroll anchoring
- Keyboard-only scrolling areas trên adrianroselli.com (2022)
- Scroll snap examples trên CodePen (2022)
- Practical CSS scroll snapping/ trên CSS-Tricks (2020)
- CSS scroll snap trên 12 Days of Web (2019)
- Well-controlled scrolling with CSS scroll snap trên web.dev (2018)