縦スクロールしたらフワッとフェードインしてきてそのまま固定されるヘッダーの制作備忘録。
できるだけスクリプトがシンプルで、簡易に設置できるものを探していて、見つけて実践したらとても簡単に設置できたので、備忘録として記事に。
下記のサイトを活用させて頂きました。すばらしい記事に感謝です!
【jQuery】縦スクロールすると上からフワッと出てきて固定されるメニューヘッダ
設置方法は以下に簡単に記載しておきます。
スクリプト
jQuery本体の読み込みとヘッダ固定用のスクリプト
*今回使用したサイトはWordpressなどのCMSではなかったので、スクリプトは内に記述しました。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
「.XXXXXX」をフェードインさせるパーツのクラス名もしくはID名を記述。
<script> //scroll fix header $(function () { "use strict"; var flag = "view"; $(window).on("scroll", function () { // scrollTop()が「200」より大きい場合 //画面トップから、ナビゲーションメニューまでの高さ(ピクセル)を指定すれば、メニュースクロールで //消えていくタイミングでヘッダが表示されて固定される。 if ($(this).scrollTop() > 200) { if (flag === "view") { $(".fix-header").stop().css({opacity: '1.0'}).animate({ //”▲.XXXXXX”の部分は固定ヘッダとして表示させるブロックのID名もしくはクラス名に top: 0 }, 500); flag = "hide"; } } else { if (flag === "hide") { $(".XXXXXX").stop().animate({top:"-AApx",opacity: 0}, 500); //”▲.XXXXXX”の部分は固定ヘッダとして表示させるブロックのID名もしくはクラス名に //”▲-AApx”のAA部分は固定ヘッダの隠す高さを flag = "view"; } } }); }); </script>
HTMLソース
body直下あたりに記述。
内容は特に指定はない。
CSSでデザイン周りを調整
記述が必要なのは以下
・最初読み込んだときは透過:opacity
・他のアイテムに対して最上位のレイヤーになるように:z-index
・スクロールするまで隠すために高さをマイナスマージンに
引用元サイトのCSS例
.fix-header { background-color:#646464; line-height: 66px; top: -66px;/* 上に隠す鷹さ */ left: 0; text-align: center; width: 100%; margin: 0 auto; color: #fff; padding-top:15px; position: fixed; opacity:0;/* 最初読み込んだときは透過 */ z-index: 1000;/* 他のアイテムに対して最上位のレイヤーになるように */ /* opacity: 0; */ }
表示方法を違う形が良い場合は以下のサイトも活用できます。