Rohan
Rohan

Reputation: 13781

Build responsive navbar using bootstrap which collapses to an aside nav bar?

How do I go about building a responsive navbar in Twitter Bootstrap 3 which collapses as an aside navigation menu in a mobile device?

I know how to use the responsive navbar that ships with the current Bootstrap version but I would like to implement something else like the one in the given in the link below!

http://grainandmortar.com/

Upvotes: 0

Views: 3283

Answers (1)

Sebsemillia
Sebsemillia

Reputation: 9476

Basically you can do it like this:

HTML Structure:

<div class="row row-offcanvas row-offcanvas-right">
    <div class="col-xs-12 col-sm-9">
        <p class="pull-right visible-xs">
            <button type="button" class="btn btn-primary btn-xs" data-toggle="offcanvas">Toggle nav</button>
         </p>
    </div>

    <div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation">
        <div class="list-group">
            <a href="#" class="list-group-item active">Link</a>
        </div>
    </div>
</div>

CSS:

html,
body {
  overflow-x: hidden; /* Prevent scroll on narrow devices */
}   

/*
 * Off Canvas
 * --------------------------------------------------
 */
@media screen and (max-width: 767px) {
  .row-offcanvas {
    position: relative;
    -webkit-transition: all .25s ease-out;
         -o-transition: all .25s ease-out;
            transition: all .25s ease-out;
  }

  .row-offcanvas-right {
    right: 0;
  }

  .row-offcanvas-left {
    left: 0;
  }

  .row-offcanvas-right
  .sidebar-offcanvas {
    right: -50%; /* 6 columns */
  }

  .row-offcanvas-left
  .sidebar-offcanvas {
    left: -50%; /* 6 columns */
  }

  .row-offcanvas-right.active {
    right: 50%; /* 6 columns */
  }

  .row-offcanvas-left.active {
    left: 50%; /* 6 columns */
  }

  .sidebar-offcanvas {
    position: absolute;
    top: 0;
    width: 50%; /* 6 columns */
  }
}

jQuery;

$(document).ready(function () {
  $('[data-toggle="offcanvas"]').click(function () {
    $('.row-offcanvas').toggleClass('active')
  });
});

Take a look at this Bootstrap Template to see it in action.

Bootstrap Offcanvas Menu

Upvotes: 2

Related Questions