Bài 5. Navbar, nav, breadcrumb và pagination

Điều hướng tốt giúp người dùng không bị lạc. Bài này dựng thanh điều hướng responsive tự thu gọn trên điện thoại, các dạng tab/pill, đường dẫn breadcrumb và phân trang của Bootstrap.

50 phútCơ bản
Bạn sẽ học được
  • Dựng navbar có logo, menu, dropdown, ô tìm kiếm
  • Thu gọn navbar bằng navbar-expand-* và nút toggler
  • Dùng nav-tabs, nav-pills
  • Tạo breadcrumb và pagination

Một số khái niệm

navbar-expand-lg nghĩa là từ lg trở lên menu nằm ngang, nhỏ hơn thì gập vào nút ☰ (navbar-toggler) và mở ra bằng thành phần collapse. Màu navbar dùng bg-* kết hợp thuộc tính data-bs-theme="dark" cho chữ sáng trên nền tối.

Navbar responsive

<nav class="navbar navbar-expand-sm bg-success" data-bs-theme="dark">
  <div class="container-fluid">
    <a class="navbar-brand fw-bold" href="#"><i class="bi bi-mortarboard"></i> Tự Học Tin</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#menu" aria-controls="menu" aria-expanded="false" aria-label="Mở menu"><span class="navbar-toggler-icon"></span></button>
    <div class="collapse navbar-collapse" id="menu">
      <ul class="navbar-nav me-auto">
        <li class="nav-item"><a class="nav-link active" href="#">Trang chủ</a></li>
        <li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">Khóa học</a>
          <ul class="dropdown-menu"><li><a class="dropdown-item" href="#">HTML</a></li><li><a class="dropdown-item" href="#">CSS</a></li><li><hr class="dropdown-divider"></li><li><a class="dropdown-item" href="#">Bootstrap 5</a></li></ul></li>
        <li class="nav-item"><a class="nav-link" href="#">Liên hệ</a></li>
      </ul>
      <form class="d-flex" role="search"><input class="form-control form-control-sm me-2" type="search" placeholder="Tìm bài học"><button class="btn btn-sm btn-light">Tìm</button></form>
    </div>
  </div>
</nav>
Kết quả hiển thị

Bấm “Khóa học” để mở dropdown. Khi khung hẹp hơn 576px (sm), menu gập vào nút ☰.

Tabs và pills

<ul class="nav nav-tabs mb-2"><li class="nav-item"><a class="nav-link active" href="#">Mô tả</a></li><li class="nav-item"><a class="nav-link" href="#">Nội dung</a></li><li class="nav-item"><a class="nav-link disabled">Đánh giá</a></li></ul>
<ul class="nav nav-pills nav-fill"><li class="nav-item"><a class="nav-link active" href="#">Tất cả</a></li><li class="nav-item"><a class="nav-link" href="#">Cơ bản</a></li><li class="nav-item"><a class="nav-link" href="#">Nâng cao</a></li></ul>
Kết quả hiển thị

Muốn bấm tab để chuyển nội dung, thêm data-bs-toggle="tab" và các khối .tab-content > .tab-pane (bài 8).

Breadcrumb và pagination

<nav aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="#">Trang chủ</a></li><li class="breadcrumb-item"><a href="#">Phát triển web</a></li><li class="breadcrumb-item active" aria-current="page">Bootstrap 5</li></ol></nav>
<nav aria-label="Phân trang"><ul class="pagination pagination-sm">
  <li class="page-item disabled"><a class="page-link">Trước</a></li><li class="page-item"><a class="page-link" href="#">1</a></li>
  <li class="page-item active" aria-current="page"><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="#">Sau</a></li></ul></nav>
Kết quả hiển thị
Mẹo hay

Thêm sticky-top cho navbar để dính đầu trang khi cuộn; dùng fixed-top thì nhớ thêm padding-top cho body.

Lưu ý

Mỗi navbar phải có id collapse riêng và data-bs-target trỏ đúng id; nhân bản navbar mà không đổi id sẽ khiến nút ☰ mở nhầm menu.

Thực hành
  1. Dựng navbar cho website cá nhân có dropdown “Dự án”.
  2. Đổi navbar sang nền trắng có bóng, dính đầu trang.
  3. Thêm breadcrumb cho trang chi tiết bài viết.
  4. Tạo phân trang 5 trang, trang hiện tại được tô.
Tóm tắt bài học
  • navbar + navbar-expand-{bp} + toggler + collapse.
  • dropdown với data-bs-toggle="dropdown".
  • nav-tabs, nav-pills, nav-fill.
  • breadcrumb, pagination có aria-label, aria-current.