Responsive Mobile Toggle Navigation With jQuery And CSS3
| File Size: | 254 KB |
|---|---|
| Views Total: | 10957 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
A fully responsive, multi-level site navigation system that uses JQuery and CSS3 media queries to switch between dropdown navigation and mobile-friendly toggle menu depending on the current screen size.
How to use it:
1. Create a normal multi-level drop down menu using nested nav lists as follow:
<nav> <a class="mobile_menu" title="Menu" href="#"></a> <ul> <li><a href="#" aria-haspopup="true">About Us </a> <ul> <li><a href="#">Sub Link 1</a></li> <li><a href="#">Sub Link 2</a></li> </ul> </li> <li><a href="#" aria-haspopup="true">Design Corner</a> <ul> <li><a href="#">Sub Link 1</a></li> <li><a href="#">Sub Link 2</a></li> <li><a href="#" aria-haspopup="true">Sub Link 3</a> <ul> <li><a href="#">Sub Sub Link 4</a></li> <li><a href="#">Sub Sub Link 5</a></li> </ul> </li> </ul> </li> <li><a href="#" >Products</a> <ul> <li><a href="#">Sub Link 1</a></li> <li><a href="#">Sub Link 2</a></li> </ul> </li> <li><a href="#">Contact Us</a></li> </ul> </nav>
2. The primary CSS styles for the navigation menu.
nav {
background-color: rgba(0, 0, 0, .65);
position: relative;
padding: 50px 0px 0px 0px;
}
nav a.mobile_menu {
width: 32px;
height: 32px;
background: url(../images/icon_menu.svg) no-repeat 0 0;
background-size: contain;
position: absolute;
top: 22px;
left: 50%;
margin-left: -16px;
display: none;
}
nav a:visited { color: #fff; }
nav ul {
list-style: none;
margin: 0px;
padding: 0px;
}
nav ul::after {
content: "";
display: block;
clear: both;
}
nav ul li:hover { background-color: #2b0306; }
nav ul li:hover > ul { display: block; }
nav ul li a {
display: inline-block;
color: #fff;
padding: 10px 20px;
text-decoration: none;
width: 125px;
position: relative;
}
nav ul li a:hover { background-color: #79131a; }
nav ul ul {
display: none;
position: absolute;
top: 100%;
background-color: #2b0306;
}
nav ul ul li { position: relative; }
nav ul ul ul {
left: 100%;
top: 0;
}
/* top level */
nav > ul { padding-left: 200px; }
nav > ul > li { float: left; }
nav > ul > li > a {
padding: 10px 20px 15px 20px;
width: auto;
}
nav a[aria-haspopup="true"]::after {
content: '';
display: block;
width: 0;
height: 0;
position: absolute;
border-top: 4px solid transparent;
border-bottom: 4px solid transparent;
border-left: 4px solid #fff;
right: 9px;
top: 16px;
}
nav > ul > li > a[aria-haspopup="true"]::after {
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 4px solid #fff;
left: 20px;
bottom: 6px;
right: auto;
top: auto;
}
3. Set the mobile styles to the navigation menu in the CSS3 media queries:
@media screen and (max-width:760px) {
nav { padding-top: 80px; }
nav > ul { padding-left: 10px; }
}
@media screen and (max-width:625px) {
nav {
padding: 50px 15px 20px 15px;
background-color: #4b0a0c;
height: 0px;
overflow: hidden;
}
nav a.mobile_menu { display: block; }
nav ul, nav ul ul, nav ul ul ul {
display: block;
position: static;
}
nav > ul { padding: 0px; }
nav > ul > li {
float: none;
margin-top: 25px;
}
nav ul li:hover { background: none; }
nav ul li a {
display: block;
margin: 8px 10px 8px 10px;
padding: 6px 15px 6px 2px;
border-bottom: 1px solid rgba(255, 255, 255, .25);
width: auto;
}
nav ul li a:hover { background-color: rgba(255, 255, 255, .2); }
nav ul ul { background: none; }
nav ul ul li a { margin-left: 30px; }
nav ul ul ul li a { margin-left: 60px; }
nav a[aria-haspopup="true"]::after { display: none; }
}
4. Place the latest version of jQuery library right before the closing body tag.
<script src="//code.jquery.com/jquery-3.1.1.js"></script>
5. The core JavaScript to active & animate the navigation menu.
$ (document).ready(function(){
$('nav a.mobile_menu').on('click', function() {
var currentNAvHeight = $('nav').height();
if( currentNAvHeight < 5){
var newNavHeight = $('nav > ul').height() + 15;
$('nav').animate({'height': newNavHeight + 'px'}, 750);
}else {
$('nav').animate({'height':'0px'}, 750, function () {
$(this).removeAttr('style');
});
}
});
$(window).resize(function(){
if ( $(this).width() > 625) {
$('nav').removeAttr('style');
}
});
});
This awesome jQuery plugin is developed by Charlyinthenet. For more Advanced Usages, please check the demo page or visit the official website.











