Performance: Pagination component
Pagination affects page load speed and interaction responsiveness by controlling how much content is rendered and how often the DOM updates.
<ul class="pagination"> <li class="page-item"><a class="page-link" href="#">1</a></li> <li class="page-item disabled"><span class="page-link">...</span></li> <li class="page-item"><a class="page-link" href="#">10</a></li> </ul>
<ul class="pagination"> <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> <!-- Many more page items rendered at once --> </ul>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Render all page links at once | High (many nodes) | Multiple per update | High (many elements) | [X] Bad |
| Render limited page links with ellipsis | Low (few nodes) | Single per update | Low (few elements) | [OK] Good |
| Re-render entire pagination on click | High (many nodes updated) | Multiple per click | High | [X] Bad |
| Update only changed page item on click | Low (few nodes updated) | Single per click | Low | [OK] Good |
pagination component?pagination.pagination-list, page-container, and page-list are not valid Bootstrap classes.<nav aria-label="Page navigation example">
<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" 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="#">Next</a></li>
</ul>
</nav>Previous button has disabled class, so it is not clickable. The page 2 has active class, so it is highlighted.Next have no disabled class, so they are clickable links.<ul class="pagination"> <li class="page-item"><a class="page-link" href="#">1</a></li> <li class="page-link active"><a href="#">2</a></li> <li class="page-item"><a class="page-link" href="#">3</a></li> </ul>
active class on the page-item <li>, not on the page-link.pagination, and anchors are required inside list items.disabled class on the first page.active class and aria-current="page". Pages are in correct order 1 to 5.Pass the test and this pattern moves unknown