[JS]最近よく見かける1ページ垂直スクロールコンテンツで、スクロール位置を自動補正するスクリプト -windows.js
Post on:2013年3月8日
sponsorsr
スクリプトの名前が「windows.js」でMicrosoftの? と思うかもしれませんが、MicrosoftのWidndowsとは関係なく、ブラウザのウインドウのことです。
最近よく見かける1ページで構成されたサイトで、垂直に配置したコンテンツごとに背景色を変え、垂直にスクロールした時に、中途半端なスクロール位置でも指定した位置にスナップ(自動補正)させるjQueryのプラグインを紹介します。

windows.jsのデモ
デモページはコンテンツごとに異なるカラーの背景で、スクロールすると次のコンテンツが表示されます。

まずは、ゆっくりとスクロール。
次のコンテンツが見えてきました。

中途半場な位置でストップ
スクロールをストップし1秒くらい放置すると、ちょうどいい位置にスナップします。

次のコンテンツをいい位置で表示
スクロールしすぎた場合にも対応しています。

通り過ぎてしまった場合
スクロールしすぎた場合も、無問題!

スクロールしすぎも補正
windows.jsの使い方
実装は簡単で、既存のコンテンツにclassを加えるだけで適用できます。
Step 1: HTML
HTMLは各コンテンツを配置しているdivやsectionにclassを加えるだけです。
classは変更可です。
<section class="window"></section> <section class="window"></section> <section class="window"></section> <section class="window"></section> <section class="window"></section>
Step 2: 外部ファイル
「jquery.js」と当スクリプトをhead内に記述します。
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="js/jquery.windows.js"></script>
Step 3: JavaScript
jQueryのセレクタで各コンテンツに付加したclassを指定し、スクリプトを実行します。
オプションでは、スナップするスピードやインターバルの時間を設定できます。
$(document).ready(function(){
$('.window').windows({
snapping: true,
snapSpeed: 500,
snapInterval: 1100,
onScroll: function(scrollPos){
// scrollPos:Number
},
onSnapComplete: function($el){
// after window ($el) snaps into place
},
onWindowEnter: function($el){
// when new window ($el) enters viewport
}
})
});
SCSS
参考に、パネルの配置や各背景のカラーを変更するスタイルシートです。
.window{
width:100%;
height:100%;
position:absolute;
}
@for $i from 1 through 6{
.window:nth-child(#{$i}){
background:nth($colors, $i);
top:($i - 1) * 100%;
}
}
sponsors











