Source

Phân trang

Tài liệu và ví dụ để hiển thị phân trang để chỉ ra một loạt nội dung có liên quan tồn tại trên nhiều trang.

Tổng quan

Chúng tôi sử dụng một khối lớn các liên kết được kết nối để phân trang, làm cho các liên kết khó bị bỏ lỡ và dễ dàng mở rộng — tất cả đồng thời cung cấp các khu vực truy cập lớn. Phân trang được xây dựng với các phần tử HTML danh sách để trình đọc màn hình có thể thông báo số lượng liên kết có sẵn. Sử dụng <nav>phần tử bao bọc để xác định nó như một phần điều hướng đến trình đọc màn hình và các công nghệ hỗ trợ khác.

Ngoài ra, vì các trang có thể có nhiều hơn một phần điều hướng như vậy, bạn nên cung cấp mô tả aria-labelđể phần này <nav>phản ánh mục đích của nó. Ví dụ: nếu thành phần phân trang được sử dụng để điều hướng giữa một tập hợp các kết quả tìm kiếm, thì một nhãn thích hợp có thể là aria-label="Search results pages".

<nav aria-label="Page navigation example">
  <ul class="pagination">
    <li class="page-item"><a class="page-link" href="#">Previous</a></li>
    <li class="page-item"><a class="page-link" href="#">1</a></li>
    <li class="page-item"><a class="page-link" href="#">2</a></li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
    <li class="page-item"><a class="page-link" href="#">Next</a></li>
  </ul>
</nav>

Làm việc với các biểu tượng

Tìm cách sử dụng một biểu tượng hoặc biểu tượng thay cho văn bản cho một số liên kết phân trang? Đảm bảo cung cấp hỗ trợ trình đọc màn hình thích hợp với ariacác thuộc tính và .sr-onlytiện ích.

<nav aria-label="Page navigation example">
  <ul class="pagination">
    <li class="page-item">
      <a class="page-link" href="#" aria-label="Previous">
        <span aria-hidden="true">&laquo;</span>
        <span class="sr-only">Previous</span>
      </a>
    </li>
    <li class="page-item"><a class="page-link" href="#">1</a></li>
    <li class="page-item"><a class="page-link" href="#">2</a></li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
    <li class="page-item">
      <a class="page-link" href="#" aria-label="Next">
        <span aria-hidden="true">&raquo;</span>
        <span class="sr-only">Next</span>
      </a>
    </li>
  </ul>
</nav>

Trạng thái vô hiệu và hoạt động

Các liên kết phân trang có thể tùy chỉnh cho các trường hợp khác nhau. Sử dụng .disabledcho các liên kết xuất hiện không thể nhấp được và .activeđể chỉ ra trang hiện tại.

Trong khi .disabledlớp sử dụng pointer-events: noneđể cố gắng vô hiệu hóa chức năng liên kết của <a>s, thuộc tính CSS đó vẫn chưa được tiêu chuẩn hóa và không tính đến điều hướng bàn phím. Do đó, bạn phải luôn thêm tabindex="-1"các liên kết bị vô hiệu hóa và sử dụng JavaScript tùy chỉnh để vô hiệu hóa hoàn toàn chức năng của chúng.

<nav aria-label="...">
  <ul class="pagination">
    <li class="page-item disabled">
      <a class="page-link" href="#" tabindex="-1">Previous</a>
    </li>
    <li class="page-item"><a class="page-link" href="#">1</a></li>
    <li class="page-item active">
      <a class="page-link" href="#">2 <span class="sr-only">(current)</span></a>
    </li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
    <li class="page-item">
      <a class="page-link" href="#">Next</a>
    </li>
  </ul>
</nav>

Bạn có thể tùy ý hoán đổi các neo đang hoạt động hoặc bị vô hiệu hóa cho <span>hoặc bỏ qua neo trong trường hợp mũi tên trước / sau, để loại bỏ chức năng nhấp chuột và ngăn chặn tiêu điểm bàn phím trong khi vẫn giữ lại các kiểu đã định.

<nav aria-label="...">
  <ul class="pagination">
    <li class="page-item disabled">
      <span class="page-link">Previous</span>
    </li>
    <li class="page-item"><a class="page-link" href="#">1</a></li>
    <li class="page-item active">
      <span class="page-link">
        2
        <span class="sr-only">(current)</span>
      </span>
    </li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
    <li class="page-item">
      <a class="page-link" href="#">Next</a>
    </li>
  </ul>
</nav>

Định cỡ

Sự phân trang lớn hơn hay nhỏ hơn lạ mắt? Thêm .pagination-lghoặc .pagination-smcho các kích thước bổ sung.

<nav aria-label="...">
  <ul class="pagination pagination-lg">
    <li class="page-item disabled">
      <a class="page-link" href="#" tabindex="-1">1</a>
    </li>
    <li class="page-item"><a class="page-link" href="#">2</a></li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
  </ul>
</nav>
<nav aria-label="...">
  <ul class="pagination pagination-sm">
    <li class="page-item disabled">
      <a class="page-link" href="#" tabindex="-1">1</a>
    </li>
    <li class="page-item"><a class="page-link" href="#">2</a></li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
  </ul>
</nav>

Căn chỉnh

Thay đổi sự liên kết của các thành phần phân trang bằng các tiện ích flexbox .

<nav aria-label="Page navigation example">
  <ul class="pagination justify-content-center">
    <li class="page-item disabled">
      <a class="page-link" href="#" tabindex="-1">Previous</a>
    </li>
    <li class="page-item"><a class="page-link" href="#">1</a></li>
    <li class="page-item"><a class="page-link" href="#">2</a></li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
    <li class="page-item">
      <a class="page-link" href="#">Next</a>
    </li>
  </ul>
</nav>
<nav aria-label="Page navigation example">
  <ul class="pagination justify-content-end">
    <li class="page-item disabled">
      <a class="page-link" href="#" tabindex="-1">Previous</a>
    </li>
    <li class="page-item"><a class="page-link" href="#">1</a></li>
    <li class="page-item"><a class="page-link" href="#">2</a></li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
    <li class="page-item">
      <a class="page-link" href="#">Next</a>
    </li>
  </ul>
</nav>