Snippets Mobile

Bootstrap 5 Mobile Navigation Drawer with Submenu

A mobile slide-in navigation drawer with an expandable sub-menu, a backdrop and a call-to-action button.

Bootstrap 5 No jQuery Mar 2020 2.4K views

<section class="wdw-stage py-4">
  <div class="container d-flex justify-content-center">
    <div class="mn-phone wdw-card d-flex flex-column" id="mnPhone">
      <header class="mn-bar d-flex align-items-center justify-content-between px-3 flex-shrink-0" id="mnHeader">
        <button class="btn btn-link text-body-emphasis p-0 mn-burger" type="button" id="mnOpen" aria-label="Open menu" aria-expanded="false" aria-controls="mnDrawer">
          <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M4 7h16M4 12h16M4 17h16"/></svg>
        </button>
        <a href="#" class="text-decoration-none fw-bold text-primary">Streamly</a>
        <span class="wdw-icon" style="width:2.25rem;height:2.25rem" aria-hidden="true">
          <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="11" cy="11" r="7"/><path d="m20 20-3.5-3.5"/></svg>
        </span>
      </header>
      <main class="mn-page flex-grow-1 overflow-hidden" id="mnPage">
        <div class="mn-hero d-flex flex-column justify-content-end p-4 text-white">
          <span class="wdw-eyebrow text-white-50">Now streaming</span>
          <h1 class="h3 fw-bold mb-1">Midnight Harbour</h1>
          <p class="small mb-3 text-white-50">Season 2 · 8 episodes</p>
          <a href="#" class="btn btn-light rounded-pill align-self-start px-4">Watch now</a>
        </div>
        <div class="p-3">
          <h2 class="h6 fw-bold mb-2">Trending now</h2>
          <div class="row g-2">
            <div class="col-4"><div class="mn-poster wdw-aurora rounded-3 p-2 d-flex align-items-end small fw-semibold">Salt & Static</div></div>
            <div class="col-4"><div class="mn-poster mn-poster-2 rounded-3 p-2 d-flex align-items-end small fw-semibold text-white">Paper Moons</div></div>
            <div class="col-4"><div class="mn-poster wdw-aurora rounded-3 p-2 d-flex align-items-end small fw-semibold">Last Signal</div></div>
          </div>
        </div>
      </main>
      <div class="mn-backdrop" id="mnBackdrop"></div>
      <nav class="offcanvas offcanvas-start mn-drawer" id="mnDrawer" tabindex="-1" aria-label="Mobile navigation" data-bs-backdrop="false" data-bs-scroll="true">
        <div class="offcanvas-header border-bottom">
          <span class="offcanvas-title fw-bold text-primary">Menu</span>
          <button class="btn-close" type="button" data-bs-dismiss="offcanvas" aria-label="Close menu"></button>
        </div>
        <div class="offcanvas-body p-2">
          <ul class="nav flex-column">
            <li class="nav-item"><a class="nav-link text-body-emphasis fw-semibold" href="#">Home</a></li>
            <li class="nav-item">
              <button class="nav-link text-body-emphasis fw-semibold w-100 d-flex justify-content-between align-items-center bg-transparent border-0" type="button" data-bs-toggle="collapse" data-bs-target="#mnBrowse" aria-expanded="true" aria-controls="mnBrowse">
                Browse
                <svg class="mn-chev" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
              </button>
              <ul id="mnBrowse" class="nav flex-column collapse show ms-3 ps-2 border-start">
                <li class="nav-item"><a class="nav-link" href="#">TV shows</a></li>
                <li class="nav-item"><a class="nav-link" href="#">Movies</a></li>
                <li class="nav-item"><a class="nav-link" href="#">Documentaries</a></li>
              </ul>
            </li>
            <li class="nav-item"><a class="nav-link text-body-emphasis fw-semibold" href="#">My list</a></li>
            <li class="nav-item"><a class="nav-link text-body-emphasis fw-semibold" href="#">Downloads</a></li>
            <li class="nav-item"><a class="nav-link text-body-emphasis fw-semibold" href="#">Help centre</a></li>
          </ul>
        </div>
        <div class="p-3 border-top d-grid gap-2">
          <a href="#" class="btn btn-primary rounded-pill">Start free trial</a>
          <a href="#" class="btn btn-outline-primary rounded-pill">Sign in</a>
        </div>
      </nav>
    </div>
  </div>
</section>

Built on Bootstrap 5.3.8 with plain JavaScript — no jQuery. Supports light and dark mode via data-bs-theme.

Free to use in personal and commercial projects under the MIT license.