Hãy cố định tiêu đề bảng
- Trên web, chúng ta thường gặp các tập dữ liệu lớn hoặc bố cục dạng bảng.
- Vấn đề xuất hiện khi bắt đầu cuộn trong một bảng có hàng trăm hàng.
- Khi phần đầu bảng biến mất, người dùng sẽ khó nhớ mỗi cột tương ứng với nội dung gì.
Header cố định
- Header cố định trông như phép màu, nhưng triển khai lại rất dễ.
- Chỉ cần thêm đúng hai thuộc tính CSS vào
thead:
position: sticky;
top: 0;
- Với
sticky có mức hỗ trợ khoảng 96% trên toàn cầu, tính năng này được nhiều trình duyệt hỗ trợ ổn định.
- Nó cũng giúp cải thiện trải nghiệm người dùng.
Ý kiến của GN⁺
- Khi xử lý các bảng lớn trên website, việc giúp người dùng dễ dàng nhìn thấy tiêu đề bảng ngay cả khi cuộn xuống sẽ cải thiện đáng kể trải nghiệm người dùng.
- Thông tin rằng có thể dễ dàng cố định header của bảng bằng thuộc tính CSS
position: sticky; là điều hữu ích với các nhà phát triển web.
- Vì tính năng này được hỗ trợ rộng rãi, các nhà phát triển web có thể biết rằng họ có thể triển khai nó một cách ổn định trên nhiều trình duyệt khác nhau.
1 bình luận
Ý kiến trên Hacker News
position: sticky;tưởng như sẽ dễ, nhưng chỉ cần thao tác gì đó với nội dung bảng là sẽ phát sinh vấn đề. Ví dụ, tôi đã thêm tính năng khôi phục vị trí cuộn khi người dùng cuộn bảng, rời khỏi trang rồi quay lại, nhưng vị trí được khôi phục luôn bị lệch xuống một hàng. Khi nhìn qua header bảng trong suốt thì hàng mong muốn nằm ở trên cùng, nhưng vì header chồng lên nên hàng tiếp theo mới là hàng đầu tiên nhìn thấy. Nếu điều chỉnh vị trí cuộn có tính đến chiều cao header thì lúc đầu hoạt động tốt, nhưng đôi khi vẫn lệch vài pixel. Nguyên nhân là vì bảng rất lớn nên tôi dùng lazy loading theo sự kiện cuộn, đồng thời dùng automatic table layout nên đôi khi ô header bị quá hẹp, từ bị xuống dòng và làm tăng toàn bộ chiều cao header. Cách giải quyết cuối cùng là tạo mộtResizeObservertrên phần tử header để điều chỉnh động vị trí cuộn mỗi khi chiều cao thay đổi. Tài liệu ResizeObserver<th>, thì nhiều khả năng đó chính là hành vi họ mong muốn.stderr) và phần nội dung ra standard output (stdout). Nếu không, khi sắp xếp thì header có thể bị trộn vào kết quả.position: stickytrên các phần tử<thead>và<tr>: liên kết issue Chromiumtopcó tính đến đường viền (ví dụ 0 thay vì -1px), bạn có thể ngăn phần thân bảng tràn lên trên header. Có so sánh hai ví dụ CodePen: CodePen gốc và CodePen đã cải thiện