【jQuery】スクロールでメニューをフッターに固定する

投稿者: | 2021年4月14日
JQueryアイキャッチ画像

今回はスクロールでフッターのTOPがメニュー下の位置にきたら、メニューをフッターのTOPに固定させる方法を解説します。

 

完成後

position_bottom

 

それではいってみましょう!

 

手順

作成手順

・ウィンドウの高さを取得

・メニューの高さを取得

・フッターのTOPを取得

・メニューとフッターのTOPの開きを求める

・スクロールTOPを取得

・スクロールTOPがメニューの高さとフッターTOPの開きより大きくなったらをIF判定で固定

ざっくりこんな感じです。

 

ウィンドウの高さを取得

$(window).innerHeight()で取得します。

 

box1(メニュー)の高さを取得

$(“セレクター”).get(0).offsetHeightで取得します。

 

box2(フッター)のTOPを取得

$(“セレクター”).get(0).offsetTopで取得します。

 

box1とbox2の開きを求める

開き=ウィンドウ高さーbox1高さー(ウィンドウ高さーbox2TOP)で取得します。

 

ウィンドウのスクロールTOP座標取得

$(window).scrollTop()で取得できます。

 

CSSのFixed bottomを適用

重要なのはここで先程作成したものを足したり引いたりして、CSSのbottomを可変にします。そうすることによってフッターに固定されます。

 

全サンプルコード

コピペで即試せます(*゚▽゚)ノ

 

まとめ

私のブログでは下記の二つの目次をこの方法を応用してるので参考にしてみてくささい!

・エクセルメニュー

・Jqueryメニュー

 

【その他CSSのみで固定する方法】

・右サイドの一番下の要素をスクロール固定する場合

・naviボタンをスクロールTOP固定する場合

 

以上です。