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');