with hammer.js and Flexbox
A Pen by Oliver Knoblich on CodePen.
%script{ :src => "http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js" } | |
%script{ :src => "http://eightmedia.github.io/hammer.js/dist/jquery.hammer.js" } | |
.wrapper | |
#sidebar.scrolling | |
%ul | |
- (1..25).each do | |
%li | |
%a Link | |
#swipe.scrolling | |
#swipeme | |
.header | |
#button | |
.content | |
%h1 Off Canvas Partial Touch Template | |
%h2 with hammer.js and Flexbox | |
%ul | |
%li | |
Click | |
%span  | |
to open the sidebar | |
%li | |
Click the content to open the sidebar (only before the line) | |
%li | |
Swipe | |
%span  | |
the content with your mouse or finger to the right (only before the line) | |
%li | |
Click | |
%span  | |
to close the sidebar | |
%li | |
Click the content to close the sidebar (anywhere) | |
%li | |
Swipe | |
%span  | |
the content with your mouse or finger to the left (anywhere) |
with hammer.js and Flexbox
A Pen by Oliver Knoblich on CodePen.
$(document).ready(function() { | |
function openSidebar() { | |
$("#swipe").addClass('isOpen'); | |
} | |
function closeSidebar() { | |
$("#swipe").removeClass('isOpen'); | |
} | |
$('#swipe').hammer().on('dragleft', function(e) { | |
e.preventDefault(); | |
closeSidebar(); | |
}); | |
$('#swipeme').hammer().on('dragright', function(e) { | |
e.preventDefault(); | |
openSidebar(); | |
}); | |
$('#swipe').on('click', function(e) { | |
if($('#swipe').hasClass('isOpen')) { | |
e.preventDefault(); | |
closeSidebar(); | |
} | |
}); | |
$('#swipeme').on('click', function(e) { | |
e.stopPropagation(); | |
e.preventDefault(); | |
if($('#swipe').hasClass('isOpen')) { | |
closeSidebar(); | |
} else { | |
openSidebar(); | |
} | |
}); | |
}); |
@import "compass"; | |
@import url('http://fonts.googleapis.com/css?family=Lato:300,400,700'); | |
@import url('http://netdna.bootstrapcdn.com/font-awesome/4.0.1/css/font-awesome.css'); | |
$w: #eee; | |
$c: #4a6a8a; | |
*, *:before, *:after { | |
margin: 0; | |
padding: 0; | |
box-sizing: border-box; | |
} | |
html { | |
height: 100%; | |
} | |
body { | |
height: 100%; | |
font: 16px/1 Lato, sans-serif; | |
color: $c; | |
background: $c; | |
-webkit-touch-callout: none; | |
-webkit-tap-highlight-color: rgba(0,0,0,0); | |
-webkit-text-size-adjust: none; | |
-webkit-user-select: none; | |
overflow-x: hidden; | |
} | |
.wrapper { | |
display: -webkit-box; | |
display: -webkit-flex; | |
display: flex; | |
min-height: 100%; | |
} | |
.scrolling { | |
overflow-y: scroll; | |
-webkit-overflow-scrolling: touch; | |
} | |
#sidebar { | |
position: absolute; | |
width: 260px; | |
max-height: 100%; | |
color: #fff; | |
} | |
#sidebar ul li a { | |
display: block; | |
padding: 12px 20px; | |
border-bottom: 1px solid rgba(#fff,.3); | |
} | |
#swipe { | |
-webkit-box-flex: 1; | |
-webkit-flex: 1; | |
flex: 1; | |
background: $w; | |
box-shadow: 0 0 10px rgba(0,0,0,1); | |
transform: translate3d(0,0,0); | |
transition: all 0.1s linear; | |
} | |
#swipe.isOpen { | |
transform: translate3d(260px,0,0); | |
} | |
.header { | |
height: 50px; | |
border-bottom: 1px solid $c; | |
background: #fff; | |
} | |
.header #button { | |
float: left; | |
display: block; | |
width: 50px; | |
height: 50px; | |
margin: 0 20px 0 0; | |
text-align: center; | |
} | |
.header #button:before { | |
content:"\f0c9"; | |
font: 28px/50px 'fontawesome'; | |
color: $c; | |
} | |
.content { | |
padding: 30px 80px; | |
} | |
#swipeme { | |
position: absolute; | |
top: 0; | |
left: 0; | |
bottom: 0; | |
width: 50px; | |
height: 100%; | |
border-right: 1px solid $c; | |
} | |
/* Presentation Stuff */ | |
h1 { | |
margin: 0 0 10px; | |
font-size: 36px; | |
font-weight: 300; | |
} | |
h2 { | |
margin: 0 0 30px; | |
font-size: 24px; | |
font-weight: 300; | |
} | |
ul { | |
list-style: none; | |
} | |
.content li { | |
margin: 0 0 20px; | |
} | |
.content li span { | |
font-family: 'fontawesome'; | |
font-size: 18px; | |
margin: 0 5px; | |
} |