Panel Navigation
by mnk
HTML
<div id="switch" href="javascript:void(0)">switch</div>
<div id="container" class="panel-container">
<div class="panel">
<header>Panel 1</header>
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
<li>five</li>
</ul>
</div>
<div class="panel">
<header>Panel 2</header>
<p>hkjahsdjk ashd kjasdhkajs hjshdak sh kajhaskjhakjsdha skjh akjsfgsfgdsfsadjfgasdghf dsgfadghs fds fsdaf asdf</p>
<p>hkjahsdjk ashd kjasdhkajs hjshdak sh kajhaskjhakjsdha skjh akjsfgsfgdsfsadjfgasdghf dsgfadghs fds fsdaf asdf</p>
<p>hkjahsdjk ashd kjasdhkajs hjshdak sh kajhaskjhakjsdha skjh akjsfgsfgdsfsadjfgasdghf dsgfadghs fds fsdaf asdf</p>
<p>hkjahsdjk ashd kjasdhkajs hjshdak sh kajhaskjhakjsdha skjh akjsfgsfgdsfsadjfgasdghf dsgfadghs fds fsdaf asdf</p>
<p>hkjahsdjk ashd kjasdhkajs hjshdak sh kajhaskjhakjsdha skjh akjsfgsfgdsfsadjfgasdghf dsgfadghs fds fsdaf asdf</p>
</div>
</div>
CSS
body {
color: #303030;
font: 14px Helvetica;
}
header {
background-color: #f1f1f1;
text-align: center;
padding: 10px;
}
.panel {
position: absolute;
background-color: #fff;
opacity: 0;
-webkit-transition: all .25s ease;
-moz-transition: all .25s ease;
-ms-transition: all .25s ease;
-o-transition: all .25s ease;
transition: all .25s ease;
}
.panel.active {
opacity: 1;
-webkit-transition: all .25s ease;
-moz-transition: all .25s ease;
-ms-transition: all .25s ease;
-o-transition: all .25s ease;
transition: all .25s ease;
}
.panel-container {
position: relative;
overflow: hidden;
-webkit-transition: height .25s ease;
-moz-transition: height .25s ease;
-ms-transition: height .25s ease;
-o-transition: height .25s ease;
transition: height .25s ease;
border: 1px solid #ccc;
border-radius: 6px;
}
p {
padding: 10px;
}
#switch {
cursor: pointer;
padding: 10px;
background-color: #f9f9f9;
display: inline-block;
margin: 50px 0px 20px 150px;
z-index: 1;
}
ul {
list-style: none;
padding: 0px;
margin: 0;
}
li {
border-bottom: 1px solid #ccc;
padding: 10px;
}
li:last-child {
border-bottom: none;
}
JavaScript
var container = $('#container');
var btn = $('#switch');
var ua = navigator.userAgent;
var isiPad = /iPad/i.test(ua) || /iPhone OS 3_1_2/i.test(ua) || /iPhone OS 3_2_2/i.test(ua);
var panels = $(".panel");
var current = 0;
function updatePosition() {
var width = container.innerWidth();
panels.removeClass('active');
$.each(panels, function (index) {
var targetPosition = 0;
if (index === current) {
$(this).addClass('active');
targetPosition = width * -(index - current)
} else {
targetPosition = width * (index - current)
}
$(this).css({
width: width,
top: 0,
left: targetPosition
});
});
container.css({
height: $(panels[current]).innerHeight()
});
}
updatePosition();
var eventName = isiPad ? 'touchstart' : 'click';
btn.on(eventName, function () {
if (current < panels.length - 1) {
current++;
} else {
current = 0;
}
updatePosition();
});