【jQuery】スクロールしても上部に固定されるヘッダー【day54】

jQuery

プログラミング独学day54の学習で、得たことや気づきを教えて!

今日は

・【jQuery】スクロールしても上部に固定されるヘッダー

をアウトプットします!

 

 

 

こんにちは。プログラミングでweb制作ができるようになりたいharuです。

2歳0歳の育児をしながら、22時〜1時に独学しています!

→プログラミング学習day54、もりけん塾day10

 

わかったことや、気付きをログに残します。

同じく初学者の人が、これをみてインプットや復習ができるように書いていきます。

 

【jQuery】スクロールしても上部に固定されるヘッダー

今日のアウトプットはjQueryです。

→「jQuery標準デザイン講座」本の制作レッスン25。

スクロールしても上部にヘッダーが固定されたまま”という実装は頻出
なので、くわしくアウトプットしてみます。

完成物

このように下にスクロールしていっても、ヘッダーのnav部分が上部に固定されています。

よくみるスタイルですね。

 

構成

jQueryでコードを書くまえに、構成を考えます。

【構成】
①スクロール量を取得する
②スクロール量によってヘッダーの位置を固定or戻す

構成はシンプルです。

→scrollTopでスクロール量を測定、ヘッダーの位置を固定はposition: fixedなど事前に想像もしやすい!

htmlはこのようになっています

<nav>に<li>でメニューが並んでいる構成です。

ちなみに、navをブラウザの「左上」に固定しておきたいので、CSSでtop:0 left:0の指定をしておきます。

 

上部に固定されるヘッダーを実装していきます

構成に沿って、実装していきます。

構成① スクロール量を取得する

まず、ブラウザをスクロールさせます

セレクタはwindowです。
” “で囲まないように注意!(数分エラーで悩みました…w)

.scroll()メソッドのなかに関数を書いて、スクロールしたときの処理をおこないます。

 

次に、スクロール量を取得して、nav要素の「初期位置」と比較。

→まず、「初期位置」を変数に代入しておきましょう!

*変数とは、同じ値をくり返し使うための「箱」のようなものでした。

セレクタのnavの最初の位置は、offset()メソッドで取得できます。

offset()メソッドとは?

→ページの左上を起点に、セレクタの位置(座標!)を取得できる


(引用:jQuery標準デザイン講座 )

→offset().left や offset().top とすることで、left/topそれぞれからの位置を取得することもできます。

今回は、offset().topを使用して、上部からの距離を取得しておきます。

構成② スクロール量によってヘッダーの位置を固定or戻す

そして、スクロール量を取得→offset().topの値と比較します。
スクロールの量の方が大きい場合は、ブラウザ上部に固定
そうでない場合は、通常の配置にする

positionプロパティとは?

→要素の位置を決めるプロパティのこと

position: fixed セレクタの位置を「固定」
position: static セレクタの位置を「通常に」

 

positionについての解説は、サルワカさんのサイトがわかりやすいです!

 

スクロールするとnavが上部に固定
スクロールを戻すと、navも通常に戻る
という実装が完成しました。

 

あとがき

サイトをみているとよくある実装だったので、作り方の構成をアタマに落とし込みたくてアウトプットしました。構成自体は、とてもシンプルです。
jQueryをやっていたら自然と、if文は覚えることができました。
今日は以上です。

*今日の工夫*

・ポイントの囲みを青にしてみた。

・自分が参考にしたサイトを載せてみました。→今日はサルワカさん!

 

Thanks:師匠「もりけんさん」(@terrace_tec)

もりけんさんのHPはこちら