jQuery > Animation >parallax .4

by s_hiroshi

HTML

<img id="back" src="http://www.findxfine.com/demo/images/parallax1.png" alt="parallax1" />
<div id="page-0" class="page">Page0</div>
<div id="page-1" class="page">Page1</div>
<div id="page-2" class="page">Page2</div>
<div id="page-3" class="page">Page3</div>
<ul id="nav">
    <li id="nav-0">Page0</li>
    <li id="nav-1">Page1</li>
    <li id="nav-2">Page2</li>
    <li id="nav-3">Page3</li>                                                              
</ul>

CSS

ul#nav {
    margin-left: 420px;
}
ul#nav li {
    color: #333;
}
img#back {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1;
}
div.page {
    opacity: 0.75;
    position: absolute;
    width: 400px;
    border: 1px solid #999;
    background: #ddd;
    z-index: 2;
}

JavaScript

var winHeight = $(window).height();  /* ディスプレイサイズ */
var incHeight = '+=' + String(winHeight) + 'px'; /* スクロールする量 */
var pages = $('div.page'); /*  ページの取得 */
// 位置の初期化
pages.each(function(i) {
    var distance = i * -winHeight;
    $(this).css({
        height: winHeight,
        top: distance,
        left: '0px'
    });
});
// 初期表示処理
var count = 0;
setTimeout(function move() {
    $('#back').animate({
        top: '-=165px',
        left: '0px'
    }, 1000, 'swing');
    pages.each(function(i) {
        $(this).animate({
            top: incHeight,
            left: '0px'
        }, 1000, 'swing');
    });
    count++;
    if (count < 3) {
        move(); // arguments.calleeはJsLintではさけるように言われる。
    }
}, 1000);
var navs = $('ul#nav li');
navs.each(function(i) {
    $(this).click(function(e) {
        var id = $(e.currentTarget).attr('id').split('-');
        $('#page-' + id[1]).css({
            top: '0px'
        });
    });
});