web components

collapsible-nav

A <nav> shown horizontally on larger screens that collapses to a hamburger menu on smaller ones.

This is what it looks like without styling:

code
<collapsible-nav breakpoint="700">
  <nav>
    <ul>
      <a href="#one">
        <li>First page</li>
      </a>
      <a href="#two">
        <li>Second page</li>
      </a>
      <a href="#three">
        <li>Third page</li>
      </a>
      <a href="#four">
        <li>Fourth page</li>
      </a>
    </ul>
  </nav>
</collapsible-nav>

Styling

code
<style>
  collapsible-nav.styled summary {
    padding: 0.5em;
  }
  collapsible-nav.styled details[open] summary {
    border-bottom: none;
  }
  collapsible-nav.styled .icon {
    font-size: 1.5em;
  }
  collapsible-nav.styled ul {
    padding: 0.5em;
  }
  collapsible-nav.styled a {
    margin: 0.5em 0.5em;
  }
</style>
<collapsible-nav breakpoint="700" class="styled">
  <nav>
    <ul>
      <a href="#one">
        <li>First page</li>
      </a>
      <a href="#two">
        <li>Second page</li>
      </a>
      <a href="#three">
        <li>Third page</li>
      </a>
      <a href="#four">
        <li>Fourth page</li>
      </a>
    </ul>
  </nav>
</collapsible-nav>

Alignment

Set the alignment on large screens with the align property (defaults to left).

With align="right"

code
<collapsible-nav breakpoint="700" class="styled" align="right">
  <nav>
    <ul>
      <a href="#one">
        <li>First page</li>
      </a>
      <a href="#two">
        <li>Second page</li>
      </a>
      <a href="#three">
        <li>Third page</li>
      </a>
      <a href="#four">
        <li>Fourth page</li>
      </a>
    </ul>
  </nav>
</collapsible-nav>

With align="center"

code
<collapsible-nav breakpoint="700" class="styled" align="center">
  <nav>
    <ul>
      <a href="#one">
        <li>First page</li>
      </a>
      <a href="#two">
        <li>Second page</li>
      </a>
      <a href="#three">
        <li>Third page</li>
      </a>
      <a href="#four">
        <li>Fourth page</li>
      </a>
    </ul>
  </nav>
</collapsible-nav>

Breakpoint

The breakpoint property defines below which screen width (in pixels) the <nav> should be a hamburger menu. In the above examples we used breakpint="700".

With 3000 it should be a hamburger menu on most screens.

code
<collapsible-nav breakpoint="3000" class="styled">
  <nav>
    <ul>
      <a href="#one">
        <li>First page</li>
      </a>
      <a href="#two">
        <li>Second page</li>
      </a>
      <a href="#three">
        <li>Third page</li>
      </a>
      <a href="#four">
        <li>Fourth page</li>
      </a>
    </ul>
  </nav>
</collapsible-nav>

With 200 it should not. Even on mobile

code
<collapsible-nav breakpoint="200" class="styled">
  <nav>
    <ul>
      <a href="#one">
        <li>First</li>
      </a>
      <a href="#two">
        <li>Second</li>
      </a>
    </ul>
  </nav>
</collapsible-nav>