Responsive & Animated Navigation Bar with jQuery and CSS3
| File Size: | 3.02 KB |
|---|---|
| Views Total: | 17518 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
A jQuery based responsive navigation bar that collapses into a toggleable drop down menu in mobile views. Animated with jQuery slideDown/slideUp and CSS3 transforms.
How to use it:
1. Create the regular horizontal navigation bar as follows.
<ul class="menu"> <li><a>Home</a> </li> <li><a>Menu 1</a></li> <li><a>Menu 2</a> <ul class="submenu three"> <li><a>Submenu 1</a></li> <li><a>Submenu 2</a></li> </ul> </li> <li><a>Menu 3</a></li> <li><a>About</a> <ul class="submenu five"> <li><a>Contact me</a></li> <li><a>About me</a></li> </ul> </li> </ul>
2. Create the mobile version of the navigation bar.
<nav class="navbar-mini-menu">
<div class="menu-select"> <span class="menu-actual"> Menu </span> <span class="btn-select"> </span> </div>
<ul class="mini-menu-options">
<li><a>Home</a></li>
<li tabIndex="0"><a>Menu 1</a></li>
<li tabIndex="0"><a>Menu 2</a>
<ul class="submenu five">
<li><a>Submenu 1</a></li>
<li><a>Submenu 2</a></li>
</ul>
</li>
<li tabIndex="0"><a>Menu 3</a></li>
<li tabIndex="0"><a>About</a>
<ul class="submenu five">
<li><a>Contact me</a></li>
<li><a>About me</a></li>
</ul>
</li>
</ul>
</nav>
3. Don't forget to wrap the horizontal navigation bar and the mobile toggle navigation into a parent element.
<nav class="navbar-menu"> <!-- Menu normal --> <!-- Menu mobile --> </div>
4. The basic CSS styles for the horizontal navigation bar.
.navbar-menu {
background-color: #F08080;
margin: 2% auto;
max-width: 1000px;
width: calc(100%);
}
.navbar-menu .menu {
display: block;
text-align: center;
}
.navbar-menu .menu li {
display: inline-block;
}
.navbar-menu .menu li:hover > .submenu {
display: block;
-webkit-animation-name: showSubMenu;
-webkit-animation-duration: .4s;
}
.navbar-menu .menu li ul {
background-color: #f08080;
display: none;
position: absolute;
}
.navbar-menu .menu li ul li {
display: block;
}
.navbar-menu .menu li ul li a:active {
-webkit-animation-name: hideSubMenu;
-webkit-animation-duration: .4s;
}
5. The required CSS styles for the mobile toggle navigation.
.navbar-mini-menu {
background-color: #f08080;
display: none;
}
.navbar-mini-menu .menu-select {
color: #fff;
padding: 1rem 1.5rem;
}
.navbar-mini-menu .menu-select .btn-select {
background: url("icon.png") no-repeat;
cursor: pointer;
position: absolute;
height: 30px;
width: 30px;
right: 10px;
top: 10px;
}
.navbar-mini-menu .mini-menu-options {
display: block;
}
.navbar-mini-menu .mini-menu-options li {
display: block;
}
.navbar-mini-menu .mini-menu-options li .submenu {
display: none;
}
.navbar-mini-menu .mini-menu-options li:focus {
outline: 0;
}
.navbar-mini-menu .mini-menu-options li:focus > .submenu {
display: block;
-webkit-animation-name: showSubMenu;
-webkit-animation-duration: .4s;
}
.navbar-mini-menu .mini-menu-options li a {
display: block;
padding: 1rem 1.5rem;
}
6. Set the breakpoint for the responsive navigation bar using CSS3 media queries.
<pre class="brush:xml;"> 1</pre>
7. Create the sub-menu show/hide animations using CSS3 transforms.
@-webkit-keyframes showSubMenu {
0% {
transform: scale(0,0);
}
100% {
transform: scale(1,1);
}
}
@-webkit-keyframes hideSubMenu {
0% {
transform: scale(1,1);
}
100% {
transform: scale(0,0);
}
}
8. Include the latest version of jQuery library at the bottom of the document.
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
9. Active the responsive navigation bar.
$(document).on("ready",function() {
// 0 = hide, 1 = visible
var menuState = 0;
//if($(".mini-menu-options").is(":hidden")) {
$(".btn-select").on("click",function() {
if(menuState === 0) {
$(".mini-menu-options").slideDown("slow");
menuState = 1;
} else {
$(".mini-menu-options").slideUp("slow");
menuState = 0;
}
});
//}
$(".mini-menu-options li").on("click", function() {
var numHijos = $(this).children().length;
if(numHijos < 2) {
// hide the menu
$(".mini-menu-options").hide("fast");
var texto = $(this).text();
$(".menu-select .menu-actual").text(texto);
}
menuState = 0;
});
});
This awesome jQuery plugin is developed by iMitsu. For more Advanced Usages, please check the demo page or visit the official website.











