Reorganize and rewrite

This commit is contained in:
Mark Otto 2025-04-28 22:21:05 -07:00 committed by GitHub
parent ca64e71db7
commit c7bf4edb48
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 30 additions and 20 deletions

View File

@ -42,13 +42,33 @@ Looking to use an icon or symbol in place of text for some pagination links? Be
</ul>
</nav>`} />
## Disabled and active states
## Active
Pagination links are customizable for different circumstances. Use `.disabled` for links that appear un-clickable and `.active` to indicate the current page.
Add `.active` to indicate a `.page-item` is the one currently being viewed. If using an `<a>` on the current page, `aria-current="page"` should be added for assistive technologies.
`aria-current="page"` should be put on the link element for the assistive technology to recognize the active element.
<Example code={`<nav aria-label="...">
<ul class="pagination">
<li class="page-item"><a href="#" class="page-link">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="#" aria-current="page">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>`} />
While the `.disabled` class uses `pointer-events: none` to _try_ to disable the link functionality of `<a>`s, that CSS property is not yet standardized and doesnt account for keyboard navigation. As such, you should always add `tabindex="-1"` on disabled links and use custom JavaScript to fully disable their functionality.
If using a non-interactive element, like a `<span>` for the current page, you may omit the `aria-current` attribute.
```html
<li class="page-item active">
<span class="page-link">2</span>
</li>
```
## Disabled
Add `.disabled` to a `.page-item` to make it appear un-clickable. While `.disabled` uses `pointer-events: none` to disable the links interactivity, that CSS property is not yet standardized and doesnt account for keyboard navigation. As such, you should always add `tabindex="-1"` on disabled links and use custom JavaScript to fully disable their functionality.
<Example code={`<nav aria-label="...">
<ul class="pagination">
@ -66,23 +86,13 @@ While the `.disabled` class uses `pointer-events: none` to _try_ to disable the
</ul>
</nav>`} />
You can optionally swap out disabled anchors for `<span>`, or omit the anchor in the case of the prev/next arrows, to remove click functionality and prevent keyboard focus while retaining intended styles.
And just like active page items, you can swap out the disabled `<a>` for a `<span> to remove click functionality and prevent keyboard focus while retaining intended styles.
<Example code={`<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">
<a class="page-link" aria-current="page">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>`} />
```html
<li class="page-item disabled">
<span class="page-link">Previous</span>
</li>
```
## Sizing