hamberger menu with 3d transform off canvas
by mnk
HTML
<div class="container">
<ul class="menu">
<li class="home">Home</li>
<li class="work">Works</li>
<li class="contact">Contact</li>
</ul> <span class="toggle">
<span class="equal">=</span>
<span class="close">x</span>
</span>
<div class="content-wrap">
<div class="content">
<div class="home">
<h1>Home</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Facere eligendi sapiente atque vel dolore iure fugit deleniti dignissimos quae quo cumque delectus blanditiis quasi consectetur ducimus dicta facilis odio est.</p>
</div>
<div class="work">
<h1>Work</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Facere eligendi sapiente atque vel dolore iure fugit deleniti dignissimos quae quo cumque delectus blanditiis quasi consectetur ducimus dicta facilis odio est.</p>
</div>
<div class="contact">
<h1>Contact</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Facere eligendi sapiente atque vel dolore iure fugit deleniti dignissimos quae quo cumque delectus blanditiis quasi consectetur ducimus dicta facilis odio est.</p>
</div>
</div>
</div>
</div>
CSS
body {
margin: 0;
padding: 0;
font-family: Helvetica;
}
html, body, .container, .content-wrap {
overflow: hidden;
width: 100%;
height: 100%;
}
.menu {
padding: 20px 0 0 10px;
position: absolute;
width: 300px;
height: 60px;
color: white;
opacity: 0;
-webkit-transition: opacity .25s ease;
-moz-transition: opacity .25s ease;
-ms-transition: opacity .25s ease;
-o-transition: opacity .25s ease;
transition: opacity .25s ease;
}
.open-menu .menu {
opacity: 1;
-webkit-transition: opacity .5s ease;
-moz-transition: opacity .5s ease;
-ms-transition: opacity .5s ease;
-o-transition: opacity .5s ease;
transition: opacity .5s ease;
}
.menu li {
line-height: 26px;
width: 150px;
cursor: pointer;
padding: 2px 10px 1px 10px;
}
.menu li:hover {
background-color: #303030;
}
.content {
margin: 0 50px;
position: relative;
}
.content-wrap {
background-color: white;
box-sizing: border-box;
overflow: hidden;
width: 100%;
height: 100%;
opacity: 1;
-webkit-box-shadow: 0 0 7px 0 rgba(0,0,0,0);
box-shadow: 0 0 7px 0 rgba(0,0,0,0);
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
-webkit-transition: -webkit-transform 0.3s;
transition: transform 0.3s;
}
.toggle {
cursor: pointer;
display: inline-block;
width: 30px;
height: 30px;
background-color: #505050;
text-align: center;
color: white;
-webkit-transition: -webkit-transform 0.5s;
transition: transform 0.5s;
}
.toggle span {
position: absolute;
top: 7px;
left: 11px;
-webkit-transition: -webkit-transform 0.3s;
transition: transform 0.3s;
}
.toggle .close {
opacity: 0;
}
.open-menu .toggle .close {
opacity: 1;
}
.toggle .equal {
opacity: 1;
}
.open-menu .toggle .equal {
opacity: 0;
}
.open-menu .content-wrap {
opacity: 0.5;
-webkit-box-shadow: 0 0 17px 0 rgba(0,0,0,1);
...
JavaScript
var btn = $('.toggle');
var container = $('.container');
var body = $('body');
var content = $('.content');
var menu = $('.menu');
btn.click(function (e) {
e.stopPropagation();
container.toggleClass('open-menu');
});
container.click(function () {
container.removeClass('open-menu');
});
menu.find('li').click(function(e){
body.removeAttr('class');
toggleSection($(e.target).attr('class'));
});
function toggleSection(section){
content.find('div').css({'display':'none'});
content.find('.'+section).css({'display': 'block'});
}
toggleSection('home');