Skip to content

Instantly share code, notes, and snippets.

@vitalyrotari
Created July 30, 2012 11:34
Show Gist options
  • Save vitalyrotari/3206338 to your computer and use it in GitHub Desktop.
Save vitalyrotari/3206338 to your computer and use it in GitHub Desktop.
Pages Slide
body {
font-family: "Helvetica Neue", Arial;
font-size: 16px;
padding: 0;
margin: 0;
}
header {
background-color: #262626;
position: relative;
height: 50px;
overflow: hidden;
}
header nav {
position: absolute;
top:0;
right:0;
bottom:0;
}
header > button {
border: 0;
height: 30px;
top: 10px;
left: -100px;
opacity: 0;
position: absolute;
text-transform: uppercase;
}
header > button.on {
left: 10px;
opacity: 1;
-webkit-transition: 0.2s all ease-in 0.1s;
-moz-transition: 0.2s all ease-in 0.1s;
-ms-transition: 0.2s all ease-in 0.1s;
-o-transition: 0.2s all ease-in 0.1s;
transition: 0.2s all ease-in 0.1s;
}
header nav a {
display: inline-block;
height: 50px;
line-height: 50px;
padding: 0 10px;
text-transform: uppercase;
text-decoration: none;
font-size: 13px;
font-weight: 500;
color: white;
}
header nav a.active {
background-color: #118FD6;
}
.pages {
width: 100%;
overflow: hidden;
}
.pages [role="main"] {
background: white;
width: 400%;
overflow: hidden;
float: none;
position: relative;
left: 0;
-webkit-transition: 0.2s all ease-in;
-moz-transition: 0.2s all ease-in;
-ms-transition: 0.2s all ease-in;
-o-transition: 0.2s all ease-in;
transition: 0.2s all ease-in;
}
.page {
background-color: #eee;
min-height: 600px;
float: left;
margin: 0;
width: 25%;
position: relative;
}
.page .title {
background-color: #111;
color: white;
height: 40px;
line-height: 40px;
text-align: center;
text-transform: uppercase;
}
.page .title span {
position: relative;
left: -20px;
opacity: 0;
-webkit-transition: 0.25s all ease-in 0.2s;
-moz-transition: 0.25s all ease-in 0.2s;
-ms-transition: 0.25s all ease-in 0.2s;
-o-transition: 0.25s all ease-in 0.2s;
transition: 0.25s all ease-in 0.2s;
}
.page .container {
position: absolute;
top: 40px;
left: 0;
right: 0;
bottom: 0;
overflow: hidden;
}
.page .content {
padding: 10px;
position: absolute;
}
.page.on .title span {
left: 0;
opacity: 1;
}
(function ($) {
var Pages = {
current: 1,
$: {
container: $('#main'),
nav: $('nav'),
layout: $('<article class="page"></article>'),
tab: $('<a href="#"></a>'),
back: $('#app-back')
},
init: function () {
var instance = this,
delay;
this.$.nav
.on('click', 'a', function (evt) {
evt.preventDefault();
var $element = $(this),
index = $element.index(),
left = 100 * index,
$pages = instance.$.container.children(),
$page = $pages.eq(index);
if (!$page.hasClass('on')) {
$pages.removeClass('on');
instance.current = index + 1;
instance.$.container
.css({left: String(-left) + '%'});
instance.$.back.removeClass('on');
if (delay) {
clearTimeout(delay);
}
if (index > 0) {
delay = setTimeout(function () {
instance.$.back.addClass('on');
}, 100);
}
$element
.siblings('.active')
.removeClass('active')
.end()
.addClass('active');
$page.addClass('on');
}
});
},
add: function (title, content) {
this.$.nav
.append(this.$.tab.clone().html(title));
this.$.container
.append(this.$.layout.clone().html(content));
this.reflow();
},
reflow: function () {
var $pages = this.$.container.children(),
count = $pages.length;
this.$.container.css({width: (count * 100) + '%'});
$pages.css({width: (100/count) + '%'});
}
};
Pages.init();
}(jQuery));
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://raw.github.com/zynga/scroller/master/src/Animate.js"></script>
<script src="http://raw.github.com/zynga/scroller/master/src/Scroller.js"></script>
<script src="https://raw.github.com/zynga/scroller/master/src/EasyScroller.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<!--<button id="add-new">Add Page</button>-->
<header>
<button id="app-back">Back</button>
<nav>
<a href="#">Home</a>
<a href="#">About</a>
<a href="#">Info</a>
<a href="#">Contacts</a>
</nav>
</header>
<div class="pages">
<section role="main" id="main">
<article class="page">
<div class="title">
<span>Home</span>
</div>
<div class="container">
<div class="content" data-scrollable="y">
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nulla vitae elit libero, a pharetra augue. Donec id elit non mi porta gravida at eget metus. Nullam quis risus eget urna mollis ornare vel eu leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Adipiscing Vehicula Sollicitudin Ornare Ridiculus</p>
<p>Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Donec ullamcorper nulla non metus auctor fringilla. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Maecenas faucibus mollis interdum. Nulla vitae elit libero, a pharetra augue. Donec ullamcorper nulla non metus auctor fringilla. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Curabitur blandit tempus porttitor.
Donec ullamcorper nulla non metus auctor fringilla. Nullam quis risus eget urna mollis ornare vel eu leo. Nulla vitae elit libero, a pharetra augue. Etiam porta sem malesuada magna mollis euismod.</p>
</div>
</div>
</article>
<article class="page">
<div class="title">
<span>About</span>
</div>
<div class="container">
<div class="content" data-scrollable="y">
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nulla vitae elit libero, a pharetra augue. Donec id elit non mi porta gravida at eget metus. Nullam quis risus eget urna mollis ornare vel eu leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Adipiscing Vehicula Sollicitudin Ornare Ridiculus</p>
<p>Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Donec ullamcorper nulla non metus auctor fringilla. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Maecenas faucibus mollis interdum. Nulla vitae elit libero, a pharetra augue. Donec ullamcorper nulla non metus auctor fringilla. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Curabitur blandit tempus porttitor.
Donec ullamcorper nulla non metus auctor fringilla. Nullam quis risus eget urna mollis ornare vel eu leo. Nulla vitae elit libero, a pharetra augue. Etiam porta sem malesuada magna mollis euismod.</p>
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nulla vitae elit libero, a pharetra augue. Donec id elit non mi porta gravida at eget metus. Nullam quis risus eget urna mollis ornare vel eu leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Adipiscing Vehicula Sollicitudin Ornare Ridiculus</p>
<p>Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Donec ullamcorper nulla non metus auctor fringilla. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Maecenas faucibus mollis interdum. Nulla vitae elit libero, a pharetra augue. Donec ullamcorper nulla non metus auctor fringilla. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Curabitur blandit tempus porttitor.
Donec ullamcorper nulla non metus auctor fringilla. Nullam quis risus eget urna mollis ornare vel eu leo. Nulla vitae elit libero, a pharetra augue. Etiam porta sem malesuada magna mollis euismod.</p>
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nulla vitae elit libero, a pharetra augue. Donec id elit non mi porta gravida at eget metus. Nullam quis risus eget urna mollis ornare vel eu leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Adipiscing Vehicula Sollicitudin Ornare Ridiculus</p>
<p>Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Donec ullamcorper nulla non metus auctor fringilla. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Maecenas faucibus mollis interdum. Nulla vitae elit libero, a pharetra augue. Donec ullamcorper nulla non metus auctor fringilla. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Curabitur blandit tempus porttitor.
Donec ullamcorper nulla non metus auctor fringilla. Nullam quis risus eget urna mollis ornare vel eu leo. Nulla vitae elit libero, a pharetra augue. Etiam porta sem malesuada magna mollis euismod.</p>
</div>
</div>
</article>
<article class="page">
<div class="title">
<span>Info</span>
</div>
<div class="container">
<div class="content" data-scrollable="y">
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nulla vitae elit libero, a pharetra augue. Donec id elit non mi porta gravida at eget metus. Nullam quis risus eget urna mollis ornare vel eu leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
</div>
</article>
<article class="page">
<div class="title">
<span>Contacts</span>
</div>
<div class="container">
<div class="content" data-scrollable="y">
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nulla vitae elit libero, a pharetra augue. Donec id elit non mi porta gravida at eget metus. Nullam quis risus eget urna mollis ornare vel eu leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nulla vitae elit libero, a pharetra augue. Donec id elit non mi porta gravida at eget metus. Nullam quis risus eget urna mollis ornare vel eu leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nulla vitae elit libero, a pharetra augue. Donec id elit non mi porta gravida at eget metus. Nullam quis risus eget urna mollis ornare vel eu leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
</div>
</article>
</section>
</div>
</body>
</html>
http://jsbin.com/ogikiq/8/edit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment