マウスホイールで移動する際、スイーンと余韻の残る動きを付けたかったので、jQueryでマウスホイールの上下イベントを取得 + 余韻をつけたイージングスクロールを実装する実験の記事を参考にさせて頂きました。
スクリプトは、下記の通りです。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function(){
var mousewheelevent = 'onwheel' in document ? 'wheel' : 'onmousewheel' in document ? 'mousewheel' : 'DOMMouseScroll';
$(document).on(mousewheelevent,function(e){
e.preventDefault();
var delta = e.originalEvent.deltaY ? -(e.originalEvent.deltaY) : e.originalEvent.wheelDelta ? e.originalEvent.wheelDelta : -(e.originalEvent.detail);
if (delta < 0){
// マウスホイールを下にスクロールしたときの処理を記載
} else {
// マウスホイールを上にスクロールしたときの処理を記載
}
});
});
</script>
これを参考に、任意の要素へ移動させるには、$(window).scrollTop()で現在位置を把握して、その位置から上と下それぞれ移動したい箇所の高さを取得して、スムースに移動させています。
<script>
$(function(){
scrSpeed = 800;
scrEasing = 'easeOutCirc';
var mousewheelevent = 'onwheel' in document ? 'wheel' : 'onmousewheel' in document ? 'mousewheel' : 'DOMMouseScroll';
$(document).on(mousewheelevent,function(e){
e.preventDefault();
var delta = e.originalEvent.deltaY ? -(e.originalEvent.deltaY) : e.originalEvent.wheelDelta ? e.originalEvent.wheelDelta : -(e.originalEvent.detail);
if (delta < 0){
if($(window).scrollTop() >= $("#cont6").offset().top){
scrSet = $("#cont6").offset().top + 200;
}else if($(window).scrollTop() >= $("#cont5").offset().top){
scrSet = $("#cont6").offset().top;
}else if($(window).scrollTop() >= $("#cont4").offset().top){
scrSet = $("#cont5").offset().top;
}else if($(window).scrollTop() >= $("#cont3").offset().top){
scrSet = $("#cont4").offset().top;
}else if($(window).scrollTop() >= $("#cont2").offset().top){
scrSet = $("#cont3").offset().top;
}else{
scrSet = $("#cont2").offset().top;
}
} else {
if($(window).scrollTop() >= $("#cont6").offset().top){
scrSet = $("#cont5").offset().top;
}else if($(window).scrollTop() >= $("#cont5").offset().top){
scrSet = $("#cont4").offset().top;
}else if($(window).scrollTop() >= $("#cont4").offset().top){
scrSet = $("#cont3").offset().top;
}else if($(window).scrollTop() >= $("#cont3").offset().top){
scrSet = $("#cont2").offset().top;
}else if($(window).scrollTop() >= $("#cont2").offset().top){
scrSet = $("#header").offset().top;
}
}
$('html,body').stop().animate({scrollTop:scrSet},scrSpeed,scrEasing);
return false;
});
});
</script>
特にパララックスサイトには、スムースな移動と任意の位置へのマウスホイール設定は合うと思います。
宜しければ、ご参考までに。