Morphing Header Navigation with jQuery and CSS3
| File Size: | 3.67 KB |
|---|---|
| Views Total: | 2845 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
A hamburger style navigation button that morphs into a full width, responsive menu panel when toggled, built using jQuery, CSS, and CSS3 transitions.
How to use it:
1. Create the Html for the burger button & navigation menu.
<div class="burger">
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
<nav>
<ul>
<li>Home</li>
<li>About</li>
<li>Blog</li>
<li>Contact</li>
</ul>
</nav>
</div>
2. The CSS styles for the hamburger button.
.burger {
position: relative;
margin-top: 20px;
display: inline-block;
width: 50px;
height: 35px;
background-color: rgba(0, 0, 0, 0.1);
border-top: 1px solid rgba(0, 0, 0, 0.1);
border-left: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 15px;
padding: 4px 0;
-webkit-transition: all 200ms cubic-bezier(0.455, 0.03, 0.515, 0.955);
-moz-transition: all 200ms cubic-bezier(0.455, 0.03, 0.515, 0.955);
-o-transition: all 200ms cubic-bezier(0.455, 0.03, 0.515, 0.955);
transition: all 200ms cubic-bezier(0.455, 0.03, 0.515, 0.955);
}
.burger:hover { background-color: #5289c6; }
.line {
display: block;
position: absolute;
height: 6px;
width: 30px;
left: 50%;
top: 8px;
margin-left: -15px;
border-radius: 10px;
box-sizing: content-box;
-webkit-box-shadow: 1px 1px 0px 0px rgba(0, 0, 0, 0.15);
-moz-box-shadow: 1px 1px 0px 0px rgba(0, 0, 0, 0.15);
box-shadow: 1px 1px 0px 0px rgba(0, 0, 0, 0.15);
background-color: #eee;
-webkit-transition: all 200ms cubic-bezier(0.455, 0.03, 0.515, 0.955);
-moz-transition: all 200ms cubic-bezier(0.455, 0.03, 0.515, 0.955);
-o-transition: all 200ms cubic-bezier(0.455, 0.03, 0.515, 0.955);
transition: all 200ms cubic-bezier(0.455, 0.03, 0.515, 0.955);
}
.line:nth-child(2) { top: 18px; }
.line:nth-child(3) { top: 28px; }
3. Style the navigation menu.
nav {
display: none;
text-align: center;
position: absolute;
width: 100%;
bottom: 35px;
}
ul {
font-size: 1.1em;
font-family: 'Roboto Condensed', sans-serif;
list-style-type: none;
text-transform: uppercase;
letter-spacing: 2px;
margin: 0;
padding: 0;
}
ul li {
color: white;
display: inline-block;
margin: 0 20px;
-webkit-transition: all 200ms ease;
-moz-transition: all 200ms ease;
-o-transition: all 200ms ease;
transition: all 200ms ease;
}
ul li:hover {
cursor: pointer;
color: #ccdff4;
}
4. Create the morphing effect using CSS & CSS3 transitions.
.burger.expand {
margin-top: 0;
padding: 24px 0 100px;
width: 100%;
border-radius: 0;
background-color: #5289c6;
}
.expand .line {
width: 40px;
margin-left: -20px;
}
.expand .line:first-child {
-ms-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
top: 40px;
}
.expand .line:nth-child(3) {
-ms-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
-webkit-box-shadow: -1px 0px 0px 0px rgba(0, 0, 0, 0.15);
-moz-box-shadow: -1px 0px 0px 0px rgba(0, 0, 0, 0.15);
box-shadow: -1px 0px 0px 0px rgba(0, 0, 0, 0.15);
top: 40px;
}
.expand .line:nth-child(2) {
opacity: 0;
top: 40px;
}
5. A little bit JavaScript to enable the morphing navigation. Add the following script after jQuery library and done.
$('.burger').on('click', function(){
if( $(this).is('.expand')){
$('nav').fadeOut('fast');
$(this).delay(100).queue(function(){
$(this).removeClass('expand').dequeue();
});
} else{
$(this).delay(100).queue(function(){
$(this).addClass('expand').dequeue();
});
$('nav').delay(200).fadeIn('fast');
}
});
This awesome jQuery plugin is developed by drew_mc. For more Advanced Usages, please check the demo page or visit the official website.











