参考:【jQuery】ナビゲーションをアニメーションで表示しページ上部に固定する方法 – North-Geek
参考サイトだと、ヘッダーはトップイメージの下にあり、そこが基準になっていますが、今回は下記のようにしました。
- 一番上にある
- 最初はabsolute
- 一定の位置までスクロールするとfixedに
- その時、アニメーション上から下りてくるように表示する
js
$(function() { var headNav = $("#header"); //scrollだけだと読み込み時困るのでloadも追加 $(window).on('load scroll', function(){ //現在の位置が500px以上かつ、クラスwhiteが付与されていない時 if($(this).scrollTop() > 500 && headNav.hasClass('white') == false) { //headerの高さ(100px)分上に設定 headNav.css({"top": '-100px'}); //クラスwhiteを付与 headNav.addClass('white'); //位置を0に設定し、アニメーションのスピードを指定 headNav.animate({"top": 0},400); } //現在の位置が100px以下かつ、クラスwhiteが付与されている時 else if($(this).scrollTop() < 100 && headNav.hasClass('white') == true){ //クラスwhiteの除去 headNav.removeClass('white'); } }); });