スクロール途中でヘッダーが消え、上にスクロールすると復活

グローバルナビゲーション
-スクロール途中でヘッダーが消え、上にスクロールすると復活-

デモページを見る

See the Pen 5-1-9 スクロール途中でヘッダーが消え、上にスクロールすると復活 by 動くWebデザインアイディア帳 (@ugokuweb) on CodePen.

「Result」内をスクロールして動きを確かめてね!

動きを実現する仕組み

jQueryを使い、指定のエリアidの高さ以上スクロールをしたら、ヘッダーにクラス名を付与する。
クラスが付与されたらCSSで非表示にする。
さらに、JavaScript でスクロール値の比較を行い、上にスクロールをしている間はヘッダーを出現させるためのクラス名を付与して、CSSでヘッダーを表示する。

[使用するライブラリ]
* jQuery

HTMLの書き方

  1. head終了タグ直前に自作のCSSを読み込みます。
    <link rel="stylesheet" type="text/css" href="css/5-1-9.css">
    </head>
  2. body内にヘッダーのナビゲーションとコンテンツのHTMLを記載します。
    <header id="header" class="DownMove">
    <h1>Logo</h1>
    <nav>
    <ul id="g-navi">
    <li><a href="#area-1">Area1</a></li>
    <li><a href="#area-2">Area2</a></li>
    <li><a href="#area-3">Area3</a></li>
    <li><a href="#area-4">Area4</a></li>
    </ul>
    </nav>
    </header>
    <main>
    <section id="area-1">
    <h2>Area 1</h2>
    <p>内容が入ります。</p>
    <!--/area1--></section>
    <section id="area-2"><!--Area2まできたらheaderが消え、上にスクロールすると復活します。-->
    <h2>Area 2</h2>
    <p>内容が入ります。</p>
    <!--/area2--></section>
    <section id="area-3">
    <h2>Area 3</h2>
    <p>内容が入ります。</p>
    <!--/area3--></section>
    <section id="area-4">
    <h2>Area 4</h2>
    <p>内容が入ります。</p>
    <!--/area4--></section>
    <!--/main--></main>
    <footer id="footer">
    <small>&copy; copyright.</small> 
    </footer>
  3. body 終了タグ直前に jQuery、動きを制御する自作のJS の2 つを読み込みます。
    <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
    <!--自作のJS-->
    <script src="js/5-1-9.js"></script>
    </body>

自作のCSS内の書き方

/*========= スクロール途中でヘッダーが表示&非表示するためのCSS ===============*/

#header{
    /*fixedで上部固定*/
	position: fixed;
	height: 70px;
	width:100%;
    z-index: 999;/*最前面へ*/
	/*以下はレイアウトのためのCSS*/
	display: flex;
	justify-content: space-between;
	align-items: center;
	background:#333;
	color:#fff;
	text-align: center;
	padding: 20px;
}

/* 上に上がる動き */

#header.UpMove{
	animation: UpAnime 0.5s forwards;
}

@keyframes UpAnime{
  from {
    opacity: 1;
	transform: translateY(0);
  }
  to {
    opacity: 0;
	transform: translateY(-100px);
  }
}

/* 下に下がる動き */

#header.DownMove{
	animation: DownAnime 0.5s forwards;
}
@keyframes DownAnime{
  from {
  	opacity: 0;
	transform: translateY(-100px);
  }
  to {
  	opacity: 1;
	transform: translateY(0);
  }
}

/* 以下は検証用のレイアウトのための CSS*/

nav ul{
list-style: none;
display: flex;
justify-content: center;
}

nav ul li a{
text-decoration: none;
color: #666;
padding:10px;
}

section{
padding:300px 0;
}

自作のJS内の書き方

var beforePos = 0;//スクロールの値の比較用の設定

//スクロール途中でヘッダーが消え、上にスクロールすると復活する設定を関数にまとめる
function ScrollAnime() {
    var elemTop = $('#area-2').offset().top;//#area-2の位置まできたら
	var scroll = $(window).scrollTop();
    //ヘッダーの出し入れをする
    if(scroll == beforePos) {
		//IE11対策で処理を入れない
    }else if(elemTop > scroll || 0 > scroll - beforePos){
		//ヘッダーが上から出現する
		$('#header').removeClass('UpMove');	//#headerにUpMoveというクラス名を除き
		$('#header').addClass('DownMove');//#headerにDownMoveのクラス名を追加
    }else {
		//ヘッダーが上に消える
        $('#header').removeClass('DownMove');//#headerにDownMoveというクラス名を除き
		$('#header').addClass('UpMove');//#headerにUpMoveのクラス名を追加
    }
    
    beforePos = scroll;//現在のスクロール値を比較用のbeforePosに格納
}


// 画面をスクロールをしたら動かしたい場合の記述
$(window).scroll(function () {
	ScrollAnime();//スクロール途中でヘッダーが消え、上にスクロールすると復活する関数を呼ぶ
});

// ページが読み込まれたらすぐに動かしたい場合の記述
$(window).on('load', function () {
	ScrollAnime();//スクロール途中でヘッダーが消え、上にスクロールすると復活する関数を呼ぶ
});

//リンク先のidまでスムーススクロール
//※ページ内リンクを行わない場合は不必要なので削除してください
    var headerH = $("#header").outerHeight(true);//headerの高さを取得    
    $('#g-navi li a').click(function () {
	var elmHash = $(this).attr('href'); 
	var pos = $(elmHash).offset().top-headerH;//header分の高さを引いた高さまでスクロール
	$('body,html').animate({scrollTop: pos}, 1000);
	return false;
});

この技術を使ったサンプルサイト

バリエーション
を見る

「機能」に関わる
動き一覧

書籍情報

紙面だからこそできるまとめ方でコードを説明し、
全体を俯瞰して調べることが出来る構成になっています。

もちろん、パーツのサンプルコードもzipでまとめてダウンロードできます。
購入をしてくださった方には特典がありますので是非チェックしてみてください!

書籍紙面サンプル

出版社:ソシム株式会社
2021/2/27 発売

書籍紙面サンプル

出版社:ソシム株式会社
2021/7/31 発売

Page
Top