Pagination is an essential UI component that helps users navigate through large amounts of content by dividing it into multiple pages.
Bootstrap 4 provides a built-in pagination component that is easy to implement and customize.
What This Tutorial Covers:
- Basic Bootstrap 4 pagination
- Pagination sizes
- Active and disabled states
- Pagination with icons
- Alignment and positioning
- Custom styling with CSS
1. Basic Bootstrap 4 Pagination
To create pagination in Bootstrap 4, use the .pagination class and wrap it inside an unordered list (<ul>). Each page number should be wrapped inside <li> with the .page-item class, and the links should have the .page-link class.
Example:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 4 Pagination</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-4">
<nav>
<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>
</div>
</body>
</html>
Explanation:
- .pagination is the main pagination container.
- .page-item is applied to each list item.
- .page-link styles the pagination links.
2. Pagination Sizes
Bootstrap provides two pagination sizes:
- .pagination-lg for large pagination
- .pagination-sm for small pagination
Example:
<div class="container mt-4">
<nav>
<ul class="pagination pagination-lg">
<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="#">Next</a></li>
</ul>
</nav>
<nav>
<ul class="pagination pagination-sm mt-3">
<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="#">Next</a></li>
</ul>
</nav>
</div>
Explanation:
- .pagination-lg makes pagination larger.
- .pagination-sm makes pagination smaller.
3. Active and Disabled States
Use .active to highlight the current page and .disabled to disable a page link.
Example:
<div class="container mt-4">
<nav>
<ul class="pagination">
<li class="page-item disabled"><a class="page-link" href="#">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</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>
</div>
Explanation:
- .active highlights the selected page.
- .disabled grays out the link and prevents clicking.
4. Pagination with Icons
You can use Font Awesome or Bootstrap glyphicons to replace text links with icons.
Example (Using Font Awesome):
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<div class="container mt-4">
<nav>
<ul class="pagination">
<li class="page-item">
<a class="page-link" href="#"><i class="fas fa-chevron-left"></i></a>
</li>
<li class="page-item active"><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="#"><i class="fas fa-chevron-right"></i></a>
</li>
</ul>
</nav>
</div>
Explanation:
- fa-chevron-left adds a left arrow for “Previous”.
- fa-chevron-right adds a right arrow for “Next”.
5. Alignment and Positioning
You can center-align or right-align pagination using Bootstrap’s flex utility classes.
Example: Centered Pagination
<div class="container mt-4">
<nav>
<ul class="pagination justify-content-center">
<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="#">Next</a></li>
</ul>
</nav>
</div>
Example: Right-Aligned Pagination
<div class="container mt-4">
<nav>
<ul class="pagination justify-content-end">
<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="#">Next</a></li>
</ul>
</nav>
</div>
Explanation:
- .justify-content-center aligns pagination in the center.
- .justify-content-end aligns pagination to the right.
6. Custom Styling with CSS
You can customize pagination with custom colors, borders, and hover effects using CSS.
Example:
<style>
.custom-pagination .page-item .page-link {
background-color: #ff5733;
color: white;
border: 1px solid #ff3300;
}
.custom-pagination .page-item.active .page-link {
background-color: #cc2900;
}
.custom-pagination .page-item .page-link:hover {
background-color: #ff3300;
}
</style>
<div class="container mt-4">
<nav>
<ul class="pagination custom-pagination">
<li class="page-item"><a class="page-link" href="#">Previous</a></li>
<li class="page-item active"><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="#">Next</a></li>
</ul>
</nav>
</div>
Explanation:
- .custom-pagination .page-link customizes the background color and borders.
- .active .page-link applies a different color for the active page.
- :hover changes the color when the user hovers.