固定配置ヘッダー(フワッと表示)実装解説|JS & CSS Scroll Header Guide

固定配置ヘッダー(フワッと表示) デザイン見本

スクロールで最初のヘッダーが隠れたタイミングでフワッと現れる固定ヘッダーの実装デモ。JavaScript と CSS の連携で滑らかなアニメーションを実現。コピーしてすぐ使えるコードを掲載しています。

固定配置ヘッダー(フワッと表示) — 実装デモ

ロゴ
Menu 1 Menu 2 Menu 3
ロゴ
Menu 1 Menu 2 Menu 3

コンテンツエリア

↓↓↓

スクロールすると追従ヘッダーがフワッと現れます

↓↓↓

スクロールすると追従ヘッダーがフワッと現れます

↓↓↓

スクロールすると追従ヘッダーがフワッと現れます

↓↓↓

スクロールすると追従ヘッダーがフワッと現れます

HTML
<header id="main-header">
  <div class="logo">ロゴ</div>
  <nav>...</nav>
</header>

<header id="fixed-header">
  <div class="logo">ロゴ</div>
  <nav>...</nav>
</header>

<main>
  <!-- ページコンテンツ -->
</main>
CSS
#main-header,
#fixed-header {
  width: 100%;
  height: 60px;
  background: #1e293b;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 20px;
  box-sizing: border-box;
}

nav ul {
  display: flex;
  gap: 16px;
  list-style: none;
  padding: 0;
  margin: 0;
}

nav a {
  color: rgba(255, 255, 255, 0.9);
  text-decoration: none;
  font-size: 0.8rem;
}

#fixed-header {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1000;
  transform: translateY(-100%);
  opacity: 0;
  transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;
}
JS
document.addEventListener('DOMContentLoaded', function() {
  var mainHeader = document.getElementById('main-header');
  var fixedHeader = document.getElementById('fixed-header');
  var lastScrollTop = 0;

  window.addEventListener('scroll', function() {
    var scrollTop = window.scrollY || document.documentElement.scrollTop;

    if (scrollTop > lastScrollTop) {
      if (scrollTop > mainHeader.clientHeight) {
        fixedHeader.style.transform = 'translateY(0)';
        fixedHeader.style.opacity = '1';
      }
    } else {
      if (scrollTop <= mainHeader.clientHeight) {
        fixedHeader.style.transform = 'translateY(-100%)';
        fixedHeader.style.opacity = '0';
      }
    }
    lastScrollTop = scrollTop;
  });
});
CSS — transform + opacity + transition

追従ヘッダーの初期状態は transform: translateY(-100%) で上方向に隠し、opacity: 0 で透明にします。transition を指定しておくことで、状態が変わる際に 0.3 秒かけてスムーズに遷移(フワッと)します。

JavaScript — scroll イベントの判定ロジック

scroll イベントで現在のスクロール量(scrollTop)を取得し、前回の値(lastScrollTop)と比較してスクロール方向を判定します。下スクロールかつ最初のヘッダーを越えたとき → 追従ヘッダーを表示。上スクロールして先頭付近に戻ったとき → 追従ヘッダーを非表示。最後に lastScrollTop を更新して次回の比較に備えます。


当サイトで公開しているWebデザインやUIの実装例は、一覧として以下記事に纏めています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次