イセンチュートリアルサイト
  • CSS
    • スクロールダウン
    • テキストナビゲーション
    • ボタン
    • メニュー
    • 動画
    • 検索
    • 画像リンクの動き
    • 背景の動き
  • Illustrator
  • JS
    • アコーディオンパネル
    • アニメーション
    • エリアの動き
    • ギャラリー
    • グラフ
    • スライド
    • テキストの動き
    • ニュースティッカー
    • ページトップリンク
    • ページ内リンク
    • メニュー
    • モーダルウィンドウ
    • ローディング
  • Photoshop
  • PHP
  • WordPress
    • プラグイン
    • リンク
  • お客様観覧用
    • WEB制作プラン
    • アニメーション
    • グローバルナビゲーション
    • スライド
  • サーバー
    • CPI
  • 未分類
  • 法律
    • 医療法
    • 柔道整復師法
TOP JS メニュー スクロール途中でヘッダーが消え、上にスクロールすると復活

JS

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

  • カテゴリー:メニュー


    768px以下で動きを変更しています。PCの場合はこのページで動きをご確認ください
     

    HTMLの書き方

    head終了タグ直前に自作のCSSを読み込みます。

    <link rel="stylesheet" type="text/css" href="css/5-1-9.css">

    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>

    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>

     

    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;
    });
    
    投稿日:2022年07月15日
次のページ
前のページ

アーカイブ

  • CSS (117)
    • スクロールダウン (8)
    • テキストナビゲーション (11)
    • ボタン (52)
    • メニュー (1)
    • 動画 (2)
    • 検索 (3)
    • 画像リンクの動き (23)
    • 背景の動き (17)
  • Illustrator (8)
  • JS (93)
    • アコーディオンパネル (2)
    • アニメーション (1)
    • エリアの動き (7)
    • ギャラリー (6)
    • グラフ (7)
    • スライド (9)
    • テキストの動き (17)
    • ニュースティッカー (1)
    • ページトップリンク (9)
    • ページ内リンク (2)
    • メニュー (28)
    • モーダルウィンドウ (1)
    • ローディング (3)
  • Photoshop (1)
  • PHP (20)
  • WordPress (4)
    • プラグイン (2)
    • リンク (1)
  • お客様観覧用 (11)
    • WEB制作プラン (1)
    • アニメーション (8)
    • グローバルナビゲーション (1)
    • スライド (1)
  • サーバー (6)
    • CPI (1)
  • 未分類 (6)
  • 法律 (2)
    • 医療法 (1)
    • 柔道整復師法 (1)
TOP
  • CSS
    • スクロールダウン
    • テキストナビゲーション
    • ボタン
    • メニュー
    • 動画
    • 検索
    • 画像リンクの動き
    • 背景の動き
  • Illustrator
  • JS
    • アコーディオンパネル
    • アニメーション
    • エリアの動き
    • ギャラリー
    • グラフ
    • スライド
    • テキストの動き
    • ニュースティッカー
    • ページトップリンク
    • ページ内リンク
    • メニュー
    • モーダルウィンドウ
    • ローディング
  • Photoshop
  • PHP
  • WordPress
    • プラグイン
    • リンク
  • お客様観覧用
    • WEB制作プラン
    • アニメーション
    • グローバルナビゲーション
    • スライド
  • サーバー
    • CPI
  • 未分類
  • 法律
    • 医療法
    • 柔道整復師法
© 2022 isen-print.