Offcanvas

Build hidden sidebars into your project for navigation, shopping carts, and more with a few classes and our JavaScript plugin.

Example

You can use a link with the href attribute, or a button with the data-bs-target attribute. In both cases, the data-bs-toggle="offcanvas" is required.

Offcanvas

Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.
HTML
<a class="btn btn-primary" data-bs-toggle="offcanvas" href="#offcanvasExample" role="button" aria-controls="offcanvasExample">  Link with href</a><button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasExample" aria-controls="offcanvasExample">  Button with data-bs-target</button><div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasExample" aria-labelledby="offcanvasExampleLabel">  <div class="offcanvas-header">    <h5 class="offcanvas-title" id="offcanvasExampleLabel">Offcanvas</h5>    <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>  </div>  <div class="offcanvas-body">    <div>      Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.    </div>    <div class="dropdown mt-3">      <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown">        Dropdown button      </button>      <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">        <li><a class="dropdown-item" href="#">Action</a></li>        <li><a class="dropdown-item" href="#">Another action</a></li>        <li><a class="dropdown-item" href="#">Something else here</a></li>      </ul>    </div>  </div></div>

Body scrolling

Scrolling the body element is disabled when an offcanvas and its backdrop are visible. Use the data-bs-scroll attribute to enable body scrolling.

Offcanvas with body scrolling

Try scrolling the rest of the page to see this option in action.

HTML
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasScrolling">Enable body scrolling</button><div class="offcanvas offcanvas-start" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" id="offcanvasScrolling">    <div class="offcanvas-header">        <h3 class="offcanvas-title" id="offcanvasScrollingLabel">Offcanvas with body scrolling</h3>        <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>    </div>    <div class="offcanvas-body">        <p>Try scrolling the rest of the page to see this option in action.</p>    </div></div>

Body scrolling and backdrop

You can also enable body scrolling with a visible backdrop.

Backdrop with scrolling

Try scrolling the rest of the page to see this option in action.

HTML
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasWithBothOptions">Enable both scrolling & backdrop</button><div class="offcanvas offcanvas-start" data-bs-scroll="true" tabindex="-1" id="offcanvasWithBothOptions">    <div class="offcanvas-header">        <h3 class="offcanvas-title" id="offcanvasWithBothOptionsLabel">Backdrop with scrolling</h3>        <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>    </div>    <div class="offcanvas-body">        <p>Try scrolling the rest of the page to see this option in action.</p>    </div></div>

Static backdrop

When backdrop is set to static, the offcanvas will not close when clicking outside of it.

Offcanvas

I will not close if you click outside of me.
HTML
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#staticBackdrop" aria-controls="staticBackdrop">    Toggle static offcanvas</button><div class="offcanvas offcanvas-start" data-bs-backdrop="static" tabindex="-1" id="staticBackdrop" aria-labelledby="staticBackdropLabel">    <div class="offcanvas-header">        <h3 class="offcanvas-title" id="staticBackdropLabel">Offcanvas</h3>        <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>    </div>    <div class="offcanvas-body">        <div>        I will not close if you click outside of me.        </div>    </div></div>

Placement

There’s no default placement for offcanvas components, so you must add one of the modifier classes below.

  • .offcanvas-start places offcanvas on the left of the viewport (shown above)
  • .offcanvas-end places offcanvas on the right of the viewport
  • .offcanvas-top places offcanvas on the top of the viewport
  • .offcanvas-bottom places offcanvas on the bottom of the viewport

Offcanvas top

...

Offcanvas right

...

Offcanvas bottom

...
HTML
<div class="offcanvas offcanvas-top" tabindex="-1" id="offcanvasTop">    <div class="offcanvas-header">        <h3 class="offcanvas-title" id="offcanvasTopLabel">Offcanvas top</h3>        <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>    </div>    <div class="offcanvas-body">        ...    </div></div>
Recent Notification