【jQuery-34】画面をスクロールすると小さくなるメニュー【実践編】

今回作るのは、スクロールをしたときにヘッダーが付いてきてきて、ある程度スクロールされたらそのヘッダーが小さくなる、というものです。これもPC・スマホ問わず多くのウェブサイトに実装されている機能ですね。

HTML, CSS と jQuery の関係について、基礎から学びたい方は以下を参考にしてください。

HTMLとCSSとjQueryの関係を超わかりやすく解説【初心者対象】   

コンテンツ

画面をスクロールすると小さくなるヘッダー

完成形はこんなかんじになります

See the Pen
scroll resize
by taichi (@taichi_na)
on CodePen.

画面をスクロールしてみてください。ヘッダーメニューがそのまま画面上部に張り付いたまま付いてきて、ある一定以上スクロールされると、小さく格納されます。

仕組みとしては、スクロールされたときに <ul> にクラスをつけてあげるというシンプルなものです。

では実際にスクリプトを書いてみましょう。

Jquery で実際に動きを実装してみる

See the Pen
scroll resize
by taichi (@taichi_na)
on CodePen.

さて、一つずつスクリプトを解読していきましょう!

1. $(window).scroll(function(){

ウィンドウをスクロールしたときに~ という一文です

2. if($(window).scrollTop() > 200){

IF文です。scrollTop() メソッドはスクロールされた量を取得してくれます。

そのスクロールされた量が 200px 以上であったとき、以下の処理を実行する、という一文です。

3. $(“ul”).addClass(“small”);

    }

ul に small クラスを追加します。(200px以上のとき)

4. else{

    $(“ul”).removeClass(“small”);

else で、「そうでなかった場合」を指定しています。

要するに、画面上部から200px以内の状態では、small クラスは付かないということです。

まとめ:scroll() メソッドでスクロールされたときの処理を実行

HTMLに表記されていないCSSを用意しておいて、それを何らかのアクションが起こった時に表示されるようにする、というのは jQuery の基本かもしれません。

そのアクションは、マウスホバーだったり、クリックだったりしますが、今回はスクロールされたときに~ということで、scroll() メソッドを使用しました。

そしてそのスクロールされた量を scrollTop() メソッドで取得し、IF文で判定をさせクラスを追加もしくは削除しました。

お疲れさまでした! 

コーヒーでも飲んでゆっくり休んでください!

コンテンツ