Sliding Hamburger Dropdown Menu With jQuery And CSS3
File Size: | 18.2 KB |
---|---|
Views Total: | 2523 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

An easy jQuery based responsive site navigation that collapses horizontal menu items to a hamburger button when the maximum screen width is reached.
Clicking/tapping the hamburger button to reveal the collapsed menu items in a fullscreen dropdown pane, with a smooth sliding animation.
How to use it:
1. Create a header navigation from a nav list.
<header class="header"> <div class="container"> <div class="header__body"> <a href="" class="header__logo"> <img src="images/logo.jpeg" alt="logo"> </a> <div class="header__burger"> <span></span> </div> <nav class="header__menu"> <ul class="header__list"> <li> <a href="#" class="header__link">Home</a> </li> <li> <a href="#" class="header__link">jQuery</a> </li> <li> <a href="#" class="header__link">Script</a> </li> <li> <a href="#" class="header__link">Net</a> </li> <li> <a href="#" class="header__link">HTML5</a> </li> <li> <a href="#" class="header__link">CSS3</a> </li> </ul> </nav> </div> </div> </header>
2. The main CSS styles for the header navigation.
.header { position: fixed; width: 100%; top: 0; left: 0; z-index: 50; } .header::before{ content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgb(60, 63, 92); z-index: 2; } .header__body { position: relative; display: flex; justify-content: space-between; height: 80px; align-items: center; } .header__logo{ flex: 0 0 60px; border-radius: 50%; overflow: hidden; position: relative; z-index: 3; } .header__logo img{ max-width: 100%; display: block; } .header__burger{ display: none; } .header__list { display: flex; position: relative; z-index: 2; } .header__list li{ list-style: none; margin-left: 20px; } .header__link{ color: #ffffff; text-transform: uppercase; font-size: 18px; text-decoration: none; }
3. Apply CSS styles to the hamburger menu in the CSS media queries.
@media(max-width: 767px){ .header__logo{ flex: 0 0 40px; } .header__body { height: 50px; } .header__burger { display: block; position: relative; width: 30px; height: 20px; position: relative; z-index: 3; } .header__burger span { position: absolute; background-color: #ffffff; width: 100%; height: 2px; left: 0; top: 9px; transition: all 0.3s ease 0s; } .header__burger::before, .header__burger::after{ content: ''; background-color: #ffffff; position: absolute; width: 100%; height: 2px; left: 0; top: px; transition: all 0.3s ease 0s; } .header__burger::after{ bottom: 0; } .header__burger.active::before { transform: rotate(45deg); top: 9px; } .header__burger.active::after { transform: rotate(-45deg); bottom: 9px; } .header__burger.active span { transform: scale(0); } .header__menu { position: fixed; top: -120%; left: 0; width: 100%; height: 100%; overflow: auto; transition: all 0.3s ease 0s; background-color: rgba(156, 163, 163, 0.959); padding: 70px 10px 20px 10px; } .header__menu.active { top: 0; } .header__list{ display: block; } .header__list li{ margin:0px 0px 20px 0px; } .header__link { font-size: 24px; } }
4. Import the latest jQuery JavaScript library in the document.
<script src="/path/to/cdn/jquery.slim.min.js"></script>
5. Enable the hamburger button to toggle the dropdown menu.
$('.header__burger').click(function(event) { $('.header__burger, .header__menu').toggleClass('active') })
6. Prevent body from scrolling when the hamburger navigation is activated. OPTIONAL.
$('.header__burger').click(function(event) { $('.header__burger, .header__menu').toggleClass('active') $('body').toggleClass('lock') })
body.lock { overflow: hidden; }
This awesome jQuery plugin is developed by mihmosi. For more Advanced Usages, please check the demo page or visit the official website.