GHWEB06.GRASSHOPPER

位置が固定されるナビゲーションの作り方

  • Category:Web関連
  • Web関連の備忘録

fixed位置が固定されているナビゲーションを作ってみます。
常に表示されている固定ナビゲーションは、閲覧者の方が好きなタイミングでページの移動が可能です。

CSSのposition:fixedで実装したサンプル

固定をしたい箇所のCSSに position:fixed; を追加します。

#nav{ position:fixed; }

サクッと出来てしまいますが、この場合、固定の場所によってはスクロールすると無駄なスペースが出来てしまいます。サンプルページでスクロールを試してみて下さい。

サンプル1

jQueryを使って実装した場合のスクリプトとサンプル

次に jQuery を使って指定位置になると固定されるように変更して見ます。
jQuery本体は、Google Hosted Libraries の バージョン1.9.1 を使用します。
まずは、css の #nav から position:fixed; の記述を削除します。
続いて、以下のスクリプトを追加します。


$(function($) {
var nav = $('#nav');
var offset = nav.offset().top;
$(window).scroll(function () {
var winTop = $(this).scrollTop();
if(winTop > offset) {
nav.css({position: 'fixed',  top: '0'})
} else {
nav.css('position','static');
}
});
});

サンプル2

スクリプト処理内容

以下、スクリプト処理内容です。

//#navを変数 nav に格納
var nav = $('#nav');

//変数 nav のY座標の値を変数 offset に代入
var offset = nav.offset().top;

//スクロールをすると {   } の中を実行
$(window).scroll(function () {

//$(this).scrollTop() でスクロール位置の値を取得し winTop に代入
var winTop = $(this).scrollTop();

//winTop が offset の値になったら以下の処理
if(winTop > offset) {

//変数 nav に position:fixed  top: 0 を指定
nav.css({position: 'fixed',  top: '0'})

} else {

//変数 nav から CSSのクラス fixed を削除
nav.removeClass('fixed');

//変数 nav に position static を指定
nav.css('position','static');


これで思った通りの動きになりました。

今回の実装にあたり、下記のサイト様の記事を参考にさせていただきました。

jQueryでスクロールすると上部に固定されるナビゲーション | webOpixel

RELATED ARTICLE
  • 掲載: