Navigation

Each bar is a nav named with aria-label: a title (an a if it links, a span if not), a ul of links, and an optional spacer. Stack bars for levels (like the two above); nest a list for a dropdown. No classes, no IDs, no JavaScript.

<nav aria-label="Site">
  <a href="./">brand</a>
  <ul>
    <li><a href="./" aria-current="page">Home</a></li>
    <li><a href="docs/">Docs</a></li>
    <li><a href="pricing/">Pricing</a></li>
  </ul>
</nav>
Full nav bar markup with Home current, plus Docs and Pricing

A bar

A bar is the basic horizontal nav strip: a brand link on one side and a row of page links beside it. It is the single nav you stack to build every other pattern on this page, and the current page is marked with aria-current="page".

It is a nav labelled with aria-label, holding a brand a followed by a ul of links. The stylesheet lays the bar out from that structure alone — no classes on the links, no script.

<nav aria-label="Site">
  <a href="./">brand</a>
  <ul>
    <li><a href="./" aria-current="page">Home</a></li>
    <li><a href="docs/">Docs</a></li>
    <li><a href="pricing/">Pricing</a></li>
  </ul>
</nav>
One bar nav with Home current, plus Docs and Pricing.

Paging

Paging steps through a sequence of pages: numbered links with Prev and Next at the ends. The current page is marked, and the disabled ends are plain text rather than links so there is nothing to click past the sequence.

It is a nav with class="paging" holding a elements for the pages; the current one takes aria-current="page", and a span stands in for any end that is unavailable.

<nav class="paging" aria-label="Pagination">
  <span>Prev</span>
  <a href="?page=1">1</a>
  <a href="?page=2" aria-current="page">2</a>
  <a href="?page=3">3</a>
  <span>Next</span>
</nav>
A pagination nav with page two current and Prev disabled.