ネモウスドットコム

エンジニア兼プロデューサーがWebサービス制作について考えるブログ

このサイトはかみさまのWebサービス制作研究所に移転しました。
こちらのサイトもぜひご覧ください。

スクロール時に表示位置を固定するjQueryプラグイン『FixedScroll』を作成しました

今さら感は否めないですが、スクロール時に表示位置を固定するjQueryプラグインを作成しました。

Webサイト制作時にこの機能が必要だったのですが、既存のプラグインだと細かい点でうまく行かなかったので(&JavaScriptのリハビリも兼ねて)。

このプラグインの使い方等について書くので、気に入った方はぜひご利用ください。

動作環境

動作確認を行なっている環境は、次の通りです。 IEを除く各ブラウザのバージョンは、執筆時での最新のものです。

OS ブラウザ
Mac Chrome, Firefox, Safari
Windows Chrome, Firefox, IE7〜10

IE6には対応していません。 が、閲覧できなくなる訳ではないのでご安心ください(投げやり)。

デモ

f:id:nemousucom:20121206042833p:plain

まずはデモをどうぞ。

デモを見てもらっても分かると思いますが、機能自体はもの凄くシンプルです。 プラグインの作成が目的ではなく、Webサイト制作中に書いたコードをjQuery用プラグインとしてまとめただけなので、必要最小限の機能しかありません。

ただ、シンプルが故に使いやすくはあると思います。

使い方

使い方は次の通りです。

  1. jQueryを読み込む
  2. FixedScrollを読み込む
  3. 動作用のJavaScriptコードを記述する(数行程度)
  4. CSSを設定する

基本的な使い方はGitHubあるいはデモのソースコードを見てもらった方が早いかも知れません。

1. jQueryを読み込む

FixedScrollはjQueryプラグインなので、まずjQueryを読み込んでください。

jQueryのバージョンは1.2.6以上のもので動作を確認できています(〜1.2.5では.scrollTop()に非対応なため動作せず)。

<script type="text/javascript" src="js/jquery.js"></script>

2. FixedScrollを読み込む

jQueryより下でFixedScrollを読み込んでください。

<script type="text/javascript" src="js/jquery.FixedScroll.js"></script>

3. 動作用のJavaScriptコードを記述する(数行程度)

次に、表示位置を固定したい要素のIDまたはクラスを指定してください。 オプション(引数)は指定しなくても動作します。

$(function() {
    $('#Navigation').FixedScroll();
});

4. CSSを設定する

表示位置を固定する要素を#Navigation、親ボックスを#Mainとする場合、デモでは以下のように設定しています。

#Main
{
    overflow: hidden;
    position: relative;
    background: #EEEEEE;
}

#Navigation
{
    position: absolute;
    top: 20px;
    width: 160px;
    margin: 0px 0px 0px 620px;
    border: 1px solid #CCCCCC;
    background: #FFFFFF;
}

このように、まず親ボックスにはposition:relative、位置を固定する要素にはposition:absoluteを指定してください。 その上で、topやwidth、margin等で位置や大きさを調整してください。

以上で設定は完了となります。

オプション

オプション機能として、ページ下部にある任意の要素と重ならないように設定可能です。

例えば、id:Footerと20pxの余白をを取りたい場合は次のように指定します。

$(function() {
    $('#Navigation').FixedScroll({
        avoid: '#Footer',
        margin: 20
    });
});

デモでこの指定がされていますので、動作を確認してみてください。

おわりに

UIの話になりますが、ユーザにとって要素の位置を固定した方がいい場合もあれば、もちろん悪い場合もあります。 固定した方がいいと判断した場合は、ぜひこのプラグインでUI向上に役立ててみてください。

また、プラグインのご指摘等もお待ちしております!