Mobile Push Menu with jQuery and CSS3 Transitions

Mobile Push Menu with jQuery and CSS3 Transitions
File Size: 29.6 KB
Views Total:
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
   

A simple implementation of responsive, mobile-friendly, off-canvas push menu using Html5, CSS3 and a little jQuery magic.

How to use it:

1. Create a regular nav menu from an unordered list.

<header>
  <nav class="nav">
    <ul class="nav-list">
      <li class="nav-item"><a href="#">Home</a></li>
      <li class="nav-item"><a href="#">Portfolio</a></li>
      <li class="nav-item"><a href="#">Settings</a></li>
      <li class="nav-item"><a href="#">Services</a></li>
      <li class="nav-item"><a href="#">Contact</a></li>
    </ul>
  </nav>
</header>

2. Insert a trigger button into the nav menu.

<button type="button" class="nav-trigger js-nav-trigger"><span></span><span></span><span></span></button>

3. Hide the trigger button & mobile push menu on the large screens.

.nav-trigger { display: none; }
.mobile-nav { display: none; }

4. Set the breakpoint using CSS3 media queries and style the mobile push menu whatever you want.

@media (max-width: 640px) {

header {
  right: 0;
  transition: right .5s;
}

.nav-trigger {
  display: block;
  position: absolute;
  right: 0;
  top: 8px;
  background: transparent;
  border: none;
}

.nav-trigger:focus { outline: none; }

.show-nav .nav-trigger { margin-top: 10px; }

.nav-trigger span {
  position: relative;
  display: block;
  width: 25px;
  height: 4px;
  margin: 4px 0;
  border-radius: 5px;
  background-color: #fff;
  transition: all .2s;
}

.show-nav .nav-trigger span:nth-child(1) { transform: rotate(405deg); }

.show-nav .nav-trigger span:nth-child(2) { opacity: 0; }

.show-nav .nav-trigger span:nth-child(3) {
  transform: rotate(-405deg);
  bottom: 16px;
}

.nav {
  position: absolute;
  right: 0;
  top: 0;
  margin-top: 0;
  width: 50px;
  height: 50px;
}

.nav-list { display: none; }

.mobile-nav .nav-list { display: block; }

.mobile-nav {
  display: block;
  background: #2a2a2a;
  position: absolute;
  left: 100%;
  bottom: 0;
  top: 0;
  width: 80%;
  transition: left .5s;
}

.show-nav .mobile-nav { left: 20%; }

.nav-item {
  width: 100%;
  border-bottom: 1px solid #333;
}

.nav-item a .fa {
  position: absolute;
  left: 10px;
  color: #fff;
  font-size: 18px;
}

.nav-item a {
  display: block;
  padding: 15px 20px 15px 40px;
  border: none;
}

.nav-list a { color: #fff !important; }

.show-nav header { right: 80%; }

}

5. The JQuery script to active the push menu on mobile devices (screen width < 640px).

jQuery(function($){
  
  
  $('body').append($('<div class="mobile-nav"></div>').html($('.nav--list').clone()));
  

  $('.js-nav-trigger').on('click',function(event){
    event.preventDefault();
    $('body').toggleClass('show-nav');
  });
       
});

This awesome jQuery plugin is developed by sethabbott. For more Advanced Usages, please check the demo page or visit the official website.