jQueryでスクロールに対応する動きがついた固定ヘッダーを実装する
最終更新日: Update!!
スクロールで画面上部に固定されるヘッダーを実装するときに、スクロール量やスクロールの方向に合わせて動きを変化させたいときに使える方法です。ファーストビューではヘッダーを表示させたくないけど、スクロール時は固定で表示させるようなデザインでよく見かけますね。
具体的には、jQueryでスクロール量を取得しながらCSS側でヘッダーの位置を調整する形になります。ここでは、ページをスクロールさせると上からヘッダーが画面上部に固定表示されて、上方向にスクロールさせるとそのまま上方向に画面外へと収まり非表示になり、下方向にスクロールすると再度表示されるという仕様です。それでは実際のコードを見ていきます。
【HTML】※一部省略
<header id="fixed-header"> <!-- 固定ヘッダーエリア --> <nav> <span>MENU 1</span> <span>MENU 2</span> <span>MENU 3</span> <span>MENU 4</span> </nav> </header> <main> <div id="inner-header"> <!-- セクション内ヘッダーエリア --> <nav> <span>MENU 1</span> <span>MENU 2</span> <span>MENU 3</span> <span>MENU 4</span> </nav> </div> </main>【CSS】※一部省略
#fixed-header { background: #fff; box-shadow: 0 2px 10px 0 rgba(0,0,0,.30); width: 100%; height: 80px; position: fixed; top: 0; left: 0; transition: all 0.3s ease 0s; transform: translateY(-80px); z-index: 100; }【javascript】
$(function(){ var startPos = 0; var headerElem = $('#fixed-header'); var threshold = 200; $(window).on('scroll',function(){ var currentPos = $(this).scrollTop(); if(currentPos > startPos) { if($(window).scrollTop() >= threshold) { headerElem.css({ 'transform': 'translateY(0)' }); } } else { headerElem.css({ 'transform': 'translateY(-80px)' }); } startPos = currentPos; }); });HTMLはシンプルにヘッダー部分だけ用意すればOKです。まずはCSSでpositionを固定にして、transformでヘッダーの高さ分上方向に移動させ、ヘッダーが画面内に表示されないようにしておきます。このときに、transitionを設定しておくと動きにアニメーションをつけることができます。 そして、JavaScriptでスクロールに合わせてヘッダー部分の動きの制御をかけていきます。閾値を示す変数にはページトップからどれくらいスクロールするとヘッダーが表示されるかというのを指定します。あとはスクロールイベントでヘッダーの位置を調整する部分を実行していくだけです。これだけでスクロールに対応した動きをする固定ヘッダーが実装できます。今回のサンプルはこちらに用意しましたのでよかったらご参考に。
See the Pen sticky-header by designsupply (@designsupply) on CodePen.
上記ではヘッダーの高さを絶対値指定していますが、高さを指定しない場合は、jQueryでヘッダーの高さを取得して、適宜変数に格納して調整する形になるかと思います。sponserd
keyword search
recent posts
- GSAPとvivusを使ったSVGのドローアニメーション
GSAPとvivusを使ったSVGのドローアニメーション
- GSAPでScrollTriggerプラグインを使ったスクロール固定表示アニメーションの応用
GSAPでScrollTriggerプラグインを使ったスクロール固定表示アニメーションの応用
- Shopifyでオリジナルテーマ制作やテーマカスタマイズで使えるTips #3
Shopifyでオリジナルテーマ制作やテーマカスタマイズで使えるTips #3
- Shopifyでオリジナルテーマ制作やテーマカスタマイズで使えるTips #2
Shopifyでオリジナルテーマ制作やテーマカスタマイズで使えるTips #2
- Shopifyでオリジナルテーマ制作やテーマカスタマイズで使えるTips #1
Shopifyでオリジナルテーマ制作やテーマカスタマイズで使えるTips #1
- ViteでReactとReact Routerを使ってみる
ViteでReactとReact Routerを使ってみる
- ViteでPugのコンパイル環境を導入する
ViteでPugのコンパイル環境を導入する
- ViteでMarkuplintとPrettierを使える環境を構築する
ViteでMarkuplintとPrettierを使える環境を構築する
categories