スポンサーリンク

Bootstrapでナビゲーションバーを固定スクロールにする方法

はじめに

本記事では、Bootstrap 5を使って、ナビゲーションバーを固定して、コンテンツをスクロールできるようにする方法について解説します。

stickyを使うか、fixedを使うかの2パターンを紹介します。

stickyでナビゲーションバーを固定スクロールにする方法

ソースコードを実装していきます。

<!-- sticky-topで固定 -->
<nav class="navbar navbar-expand-lg navbar-light bg-light sticky-top">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Logo</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
      <ul class="navbar-nav">
        <li class="nav-item"><a class="nav-link active" href="#">ホーム</a></li>
        <li class="nav-item"><a class="nav-link" href="#">アイテム</a></li>
        <li class="nav-item"><a class="nav-link" href="#">問い合わせ</a></li>
      </ul>
    </div>
  </div>
</nav>
<div style="height: 1000px; background-color: aqua;">
  <h1>1000pxの高さのコンテンツ</h1>
</div>
<div style="height: 1000px; background-color: red;">
  <h1>1000pxの高さのコンテンツ</h1>
</div>

コードの解説

ポイントとしては、コメントがある箇所になります。

  • sticky-topを使って、positionの設定をstickyにすることで、固定スクロールできるようにしています。

実行結果

以下のように、スクロールをしてもナビゲーションバーは上部に固定しながらスクロールできます。

fixedでナビゲーションバーを固定スクロールにする方法

ソースコードを実装していきます。

<!-- fixed-topで固定 -->
<nav class="navbar navbar-expand-lg navbar-light bg-light fixed-top">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Logo</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
      <ul class="navbar-nav">
        <li class="nav-item"><a class="nav-link active" href="#">ホーム</a></li>
        <li class="nav-item"><a class="nav-link" href="#">アイテム</a></li>
        <li class="nav-item"><a class="nav-link" href="#">問い合わせ</a></li>
      </ul>
    </div>
  </div>
</nav>
<!-- 最初のコンテンツはナビゲーションバーの高さのパディングをとる -->
<div style="height: 1000px; padding-top: 60px; background-color: aqua;">
  <h1>1000pxの高さのコンテンツ</h1>
</div>
<div style="height: 1000px; background-color: red;">
  <h1>1000pxの高さのコンテンツ</h1>
</div>

コードの解説

ポイントは、コメントがある箇所になります。

  • fixed-topクラスを指定することで、positionをfixedにして、位置を固定させています。
  • ナビゲーションバーの最初のコンテンツには、上部にナビゲーションバーの高さのパディングをとる必要があります。

実行結果

実行結果は、stickyのやり方と変わりはないです。

まとめ

やり方としては、どちらでも問題ないため、プロジェクトにあっているやり方を使うといいです。