JavaScript

【jQuery】スクロールすると下からアニメーションして表示されるナビゲーションメニューの実装

JavaScript

【jQuery】スクロールすると下からアニメーションして表示されるナビゲーションメニューの実装

アニメーションのサンプルは以下を参照してください。

See the Pen scroll-navigation-show by RECOOORD (@recooord) on CodePen.

上記のサンプルを下にスクロールしてみてください。下からメニューがニョキっと表示されると思います。
今回はこのような実装ができるように紹介していきます。

HTMLの記述

<section>Scroll Down↓</section>
<ul class="menu">
  <li><a href="">メニュー</a></li>
  <li><a href="">メニュー</a></li>
  <li><a href="">メニュー</a></li>
  <li><a href="">メニュー</a></li>
</ul>

ulタグでメニューを作成します。
クラス名に「menu」と付けておきます。

CSSの記述

section{
  height: 1000px;
  font-size: 50px;
  font-weight: bold;
  text-align: center;
  padding: 100px 50px;
}
.menu{
  position: fixed;
  display: flex;
  left: 0;
  bottom: 0;
  width: 100%;
  /* 1. メニューを画面下へ隠す */
  transform: translateY(100%);
  /* 2. 0.3秒かけて表示する */
  transition: .3s;
}
.menu li{
  width: 25%;
}
.menu li a{
  display: block;
  font-size: 20px;
  font-weight: bold;
  color: #fff;
  background: #000;
  text-align: center;
  text-decoration: none;
  padding: 30px;
  border: 1px solid #ccc;
}
.active{
  /* 3. メニューを定位置へ戻す */
  transform: translate(0);
}

上記のようにCSSで装飾をしていきます。
アニメーションのために指定している重要なプロパティだけ解説します。

1. メニューを画面下へ隠す

transform: translateY(100%) を指定することで、メニューの高さ分、下に要素が移動します。画面の外に移動するので、メニューは見えなくなります。

2. 0.3秒かけて表示する

これは0.3秒かけてアニメーションするためのプロパティです。

3. メニューを定位置へ戻す

クラス名「active」に、transform: translate(0) を指定します。
これは隠したメニューを定位置に戻すためのプロパティとなります。

jQueryの記述

$(function() {
    var menu = $('.menu');    
    //スクロールしてページトップから100に達したらクラスを付与する
    $(window).on('load scroll',function () {
        if ($(this).scrollTop() > 100) {
            menu.addClass('active');
        } else {
            menu.removeClass('active');
        }
    });
});

ページの先頭から100pxスクロールしたら「menu」クラスに「active」クラスを追加する、という指定をしています。
クラス名が付与されることで、CSSで指定したプロパティ「transform: translate(0)」が発動し、メニューがアニメーションされて表示される仕組みとなっております。

上記のコードは全てコピペで実装することができますので、よかったら参考にしてみてください。

あなたにおすすめの記事