Facebook Paper-like Top Sliding Menu with jQuery and CSS3
| File Size: | 2.66 KB |
|---|---|
| Views Total: | 1619 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
A Facebook Paper inspired header navigation that displays at the top of your window with a smooth CSS3 based sliding effects. Made with jQuery and CSS3 transforms & transitions.
How to use it:
1. Create a header navigation that is hidden by default.
<nav class="nav">
<ul class="nav-items">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Clients</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
</nav>
2. Create a toggle button to reveal the header navigation.
<header>
<button class="menu-button-target" data-ic-class="button-trigger">
<span class="menu-button"></span>
</button>
</header>
3. The required CSS/CSS3 for the header navigation.
* { box-sizing: border-box; }
body {
padding: 0;
margin: 0;
}
nav {
position: fixed;
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
left: 0;
-webkit-transition: all 0.4s ease;
-moz-transition: all 0.4s ease;
transition: all 0.4s ease;
width: 100%;
background: #34495e;
background-repeat: no-repeat;
background-size: cover;
background-position: 40% 60%;*/
height: 0;
overflow: hidden;
-webkit-transition-delay: 0.25s;
-webkit-transition-delay: 0.25s;
transition-delay: 0.25s;
}
.active nav { transition-delay: 0s; }
nav ul {
width: 95%;
margin: 0 auto;
padding: 0;
list-style: none;
}
nav ul li {
padding: 5px;
margin: 0;
border-bottom: 1px solid white;
}
nav ul li:nth-child(1) a {
-webkit-transition-delay: 0.1s;
-moz-transition-delay: 0.1s;
transition-delay: 0.1s;
}
nav ul li:nth-child(2) a {
-webkit-transition-delay: 0.15s;
-moz-transition-delay: 0.15s;
transition-delay: 0.15s;
}
nav ul li:nth-child(3) a {
-webkit-transition-delay: 0.2s;
-moz-transition-delay: 0.2s;
transition-delay: 0.2s;
}
nav ul li:nth-child(4) a {
-webkit-transition-delay: 0.25s;
-moz-transition-delay: 0.25s;
transition-delay: 0.25s;
}
nav ul li:last-child { border: none; }
nav ul li a {
-webkit-transition: all 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);
-moz-transition: all 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);
transition: all 0.2s cubic-bezier(0.455, 0.03, 0.515, 0.955);
position: relative;
display: block;
text-decoration: none;
color: white;
font-size: 18px;
padding: 10px;
-webkit-transform: translate3d(100px, 0, 0);
-moz-transform: translate3d(100px, 0, 0);
transform: translate3d(100px, 0, 0);
opacity: 0;
}
.active nav ul li a {
-webkit-transform: translateX(0);
-moz-transform: translateX(0);
transform: translateX(0);
opacity: 1;
}
header {
-webkit-transition: all 0.4s ease;
-moz-transition: all 0.4s ease;
transition: all 0.4s ease;
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
left: 0;
width: 100%;
position: fixed;
background: #27ae60;
color: white;
padding: 20px;
text-align: center;
font-size: 20px;
-webkit-transition-delay: 0.25s;
-moz-transition-delay: 0.25s;
transition-delay: 0.25s;
}
.active header {
-webkit-transition-delay: 0.08s;
-moz-transition-delay: 0.08s;
transition-delay: 0.08s;
}
.menu-button-target {
background: transparent;
border: none;
outline: none;
cursor: pointer;
position: absolute;
z-index: 200;
left: 10px;
height: 50px;
top: 50%;
margin-top: -23px;
webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
.menu-button-target.active .menu-button {
-webkit-transition: background .2s ease;
-moz-transition: background .2s ease;
transition: background .2s ease;
background-color: transparent;
}
.menu-button-target.active .menu-button:before,
.menu-button-target.active .menu-button:after {
-webkit-transition: top .3s ease, transform .3s .2s ease;
-moz-transition: top .3s ease, transform .3s .2s ease;
transition: top .3s ease, transform .3s .2s ease;
}
.menu-button-target.active .menu-button:before {
top: 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
transform: rotate(45deg);
}
.menu-button-target.active .menu-button:after {
top: 0;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
transform: rotate(-45deg);
}
.menu-button {
position: relative;
top: 50%;
left: 0;
display: block;
width: 40px;
height: 4px;
margin-top: -2px;
background-color: white;
border-radius: 10px;
-webkit-transition: background .2s .2s;
-moz-transition: background .2s .2s;
transition: background .2s .2s;
}
.menu-button:before,
.menu-button:after {
content: "";
display: block;
position: absolute;
width: 100%;
height: 100%;
left: 0;
background-color: white;
-webkit-transition: top .3s .2s ease, transform .3s ease;
-moz-transition: top .3s .2s ease, transform .3s ease;
transition: top .3s .2s ease, transform .3s ease;
border-radius: 10px;
-webkit-transform-origin: 50% 50%;
-moz-transform-origin: 50% 50%;
transform-origin: 50% 50%;
}
.menu-button:before {
top: -10px;
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
transform: rotate(0deg);
}
.menu-button:after {
top: 10px;
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
transform: rotate(0deg);
}
4. Include the latest version of jQuery library from a CDN.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
5. The Javascript to active the animated header navigation.
var $menuTrigger = $('[data-ic-class="button-trigger"]'),
$menuOverlay = $('[data-ic-class="overlay"]'),
$menuItem = $('.menu-item'),
activeClass = 'active',
$nav = $('nav'),
$navULHeight = $('.nav-items').outerHeight(),
navOpen = false,
$header = $('header');
var isTouch = false;
if($('html').hasClass('touch')){
isTouch = true;
}
function menuFunction(){
$menuTrigger.toggleClass(activeClass);
if(!navOpen){
$nav.height($navULHeight);
navOpen = true;
$('body').addClass('active');
$header.css('transform', 'translate3d(0, ' + $navULHeight + 'px, 0)');
} else {
$nav.height(0);
$header.css('transform', 'translate3d(0, 0, 0)');
navOpen = false;
$('body').removeClass('active');
}
}
if(isTouch) {
$menuTrigger.on('touchstart', function(){
menuFunction();
});
}
if(!isTouch) {
$menuTrigger.on('click', function(){
menuFunction();
});
}
This awesome jQuery plugin is developed by intuitive. For more Advanced Usages, please check the demo page or visit the official website.











