How to create a Simple and Responsive Sidenav

In this simple article i will take you step by step on how to create a simple and responsive sidenav or a slide out menu.

In case you get confused, Here is a very simple Video I created specifically for you.
Step 1

In order to create a navbar, you start by creating the opening and closing nav tag. And with only that materialize will give you a pink bar/border demarcating where the navbar passes.

The .nav-wrapper class will wrap or contain everything inside tha nav tag.

The .container class establishes equal width for the navbar child items(brand-logo and ul) both on the right and left.

The .right will float the list items or menu links to the right side.

.hide-on-med-and-down - This is a media query class that hides the menu links when the users reach the medium screen sizes.

Then .sidenav-trigger specifies that the Hamburger/menu button is the element to be clicked inorder to slide out the sidenav.

copy
	
<nav>

  <div class="nav-wrapper">

  <div class="container">

  <a href="#" class="brand-logo">Logo</a>

  <a href="#" class="sidenav-trigger" data-target="#slide_out"><i class="material-icons">menu</i></a>

  <ul class="right hide-on-med-and-down">
  <li> <a href="index.html">Home </a></li>
  <li> <a href="services.html">Services </a></li>
  <li> <a href="contact.html">Contact </a></li>
  </ul>

  </div>

  </div>

</nav>

Step 2

After all that, copy the same unordered list and paste it below the closing nav tag.

Remove the previous classes and replace them with .sidenav class and on the same element add an id and call it any thing you want.For this case slide_out

NOTE: The id you have assign to the UL element should be the one you target in the data-target="#slide_out" attribute on menu button.

Please note that the sidenav HTML should not be contained within the navbar HTML as in the parent element/tag(nav).

copy
	
 
   <ul class="sidenav" id="slide_out">
     <li> <a href="index.html">Home </a></li>
     <li> <a href="services.html">Services </a></li>
     <li> <a href="contact.html">Contact </a></li>
   </ul>

Step 3

Finally initialize it to start functioning.Every javascript component needs to be initialized if you are using this framework.

What we are doing here,

  • First, we wait for the document to be ready or load before running any code by adding that event DOMContentLoad.
  • Create a variable for example myNav and assign it to the element with the class of .sidenav.
  • lastly, we use the materialize instance to initialize the sidenav by passing in the variable we created and followed by an object which takes in alot of options.
copy
	
document.addEventListener('DOMContentLoaded', function() {

  var myNav = document.querySelectorAll('.sidenav');
  M.Sidenav.init(myNav, {});

});

If you wan to see the different option you can pass into that object click here Sidenav Object Options

Thanks for learning, Peace - Happy Coding Day

collections_bookmark Category :: Materialize css
date_range Published :: 1 month ago At: 11:37 PM
person Writer :: Code

YOU MAY LIKE THESE POSTS