jQueryのanimate関数で要素に動きをつけ、CSSで背景を固定し、なんちゃってパララックスなページを作ってみました。
主なコードは以下から。
html
<div id="main"> <section id="section1" class="content first"> <p class="text">↓スクロールしてください</p> </section> <section id="section2" class="content second"> <p class="box1">box1</p> <p class="box2">box2</p> </section> <section id="section3" class="content third"> <p class="box3">box3</p> <p class="box4">box4</p> </section> <!-- / #main --></div>
CSS
各sectionに背景画像を設定します。
background-attachment:fixed; で表示位置を固定し、パララックス風に見せます。
.first {
background:#FFCCCC url(images/01.jpg) 50% 0 no-repeat;
background-attachment:fixed;
}
.second {
background:#FFCCCC url(images/02.jpg) 50% 0 no-repeat;
background-attachment:fixed;
}
.third {
background:#d2f6f8 url(images/03.jpg) 50% 0 no-repeat;
background-attachment:fixed;
}
jQuery
スクロールされた値によって、animate関数で動きや透明度の変化が起こるようにしています。
ナビゲーションのアンカーリンクを滑らかに動かすのは、smoothScroll.jsを利用させていただいています。
<script src="../js/smoothScroll.js"></script>
<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
<script>
$(function() {
$(window).scroll(function () {
var top = $(this).scrollTop();
if(top > 600) {
$(".box1").animate({right: '200px'},'2000');
}
if(top > 700) {
$(".box2").animate({right: '400px'},'3000');
}
if(top > 1200) {
$(".box3").animate({opacity: '1'},'5000');
}
if(top > 1400) {
$(".box4").animate({opacity: '1' , width: '200px'},'5000');
}
});
});
</script>