The current article
ページ途中にあるグローバルナビなどをスクロール時にトップに固定するjQuery
タグを指定して、ページ途中にある要素がスクロールしてトップの位置に来た時に固定するjqueryを紹介します。
ページ最上部を固定するならposition:fixed;でも対応できると思いますが、それ以外の中段にある要素(タグ)で固定したい場合に使ってみてはいかがでしょうか。

capture
今回ご紹介するのは、○○PXスクロールしたらという物ではなく、この要素の位置に来たら固定するというものです。
応用すれば、サイドバーなども固定出来ますので、使い勝手は良いと思います。
まず、CSSとjQuery本体を読み込ませ、スクリプトを記述します。
(今回はグローバルナビで説明)
HTML記述例(HEAD部)
<html>
<head>
・
・
<link href="style.css" type="text/css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(function($) {
var nav = $('#fixedBox'),
offset = nav.offset();
$(window).scroll(function () {
if($(window).scrollTop() > offset.top) {
nav.addClass('fixed');
} else {
nav.removeClass('fixed');
}
});
});
</script>
・
・
</head>
<body>
・
・
簡単な説明です。
10行目、fixedBoxというIDがある要素が
14行目、トップの位置に来た時
15行目、fixedというクラスを付与
17行目、トップの位置でなくなればfixedというクラスを削除
となります。
10行目は、お好きなIDに変更可能ですが、その場合は下記のID名も同じにして下さい。
続いてBODY部
・
・
<div id="fixedBox" class="nav">
<ul>
<li><a href="#">メニュー</a></li>
<li><a href="#">メニュー</a></li>
<li><a href="#">メニュー</a></li>
<li><a href="#">メニュー</a></li>
<li><a href="#">メニュー</a></li>
</ul>
</div>
・
・
ナビの作り方については割愛させていただきます。
3行目のように、固定したい要素に「id=”fixedBox”」を付けて下さい。
すでに作成しておられる方は、既存の要素部分に「id=”fixedBox”」を記述してあげて下さい。
そしてもう一点、CSS部の記述です。スタイルシートに記述して下さい。
.fixed {
position: fixed;
top: 0;
width: 100%;
z-index: 10000;
}
固定するためのCSSですのでお忘れなく。
以上で、スクロールした時、要素がトップの位置に来た時に固定されるようになりました。
必要に応じて、サイドバーなどで試してみてはいかがでしょうか。
次の記事「完全無料、登録必要なし!美顔加工に特化したオンライン写真加工フォトエディタ「BeautyPlus」」→
