リオラボ
icon

【Bootstrap】 ヘッダー・フッターを固定、スクロール追従にする方法【サンプルコード】

Bootstrapを使ってヘッダー(ナビゲーションバー)やフッターを固定したりスクロールに追従させる方法を紹介しています。Bootstrapでナビゲーションやフッターを作った際、デフォルトではその要素は固定や追従はされません。つまりヘッダーであればページ上部に配置され、スクロールすればヘッダー要素は見えなくなります。フッターに関してはページ最下部に配置されており、ページ最下部にスクロールするまでは表示されない状態ということです。しかし、一つのクラス名を追記するだけで簡単に固定、追従の設定ができてしまいます。

ヘッダー

Bootstrapでは、ヘッダーナビゲーション部分にクラスを一つ追加するだけで簡単に固定・追従の設定ができます。

固定ヘッダー(上部固定)

サンプル

ページの上部にヘッダーを固定するには、navbarにfixed-topクラスを追加します。このクラスにより、ヘッダーが常にページの上部に固定され、スクロールしてもその位置に留まります。

上記はサンプルコードです。nav箇所にfixed-topを追記することで上部固定ができます。他の部分については好みでデザインを設定してください。

スクロール追従ヘッダー

サンプル

ヘッダーをスクロール時に追従させるには、sticky-topクラスを使用します。このクラスを使うとスクロールするときにページの上部に達するとヘッダーが固定され、スクロールに追従するようになります。

固定ヘッダー(下部固定)

サンプル

ページの下部にヘッダーを固定したい場合は、fixed-bottomクラスを使用します。このクラスを使うと、ヘッダーが常にページの下部に固定されます。

ただしこのままだとヘッダーとコンテンツ(フッターなど)が重なってしまうため、コンテンツ下部に適切な余白を設定する必要があります。ここで言えばフッター部分にmb-5、つまりmargin-bottom: 3rem;を追加することでフッター下部に余白ができ、ヘッダーと重ならなくなります。

メモ

・fixed-top と fixed-bottom はそれぞれ、ヘッダーをページの上部や下部に常に固定します。
・sticky-top は、要素が画面のトップに到達するまでは通常の位置にあり、スクロール時にトップに達すると固定されます。
・ただし独自にCSSを指定している場合、上手く動作しないこともあるので注意が必要です。固定ヘッダーがうまくいかない場合、いったん独自のCSSを削除して確認してみましょう。

フッター

下部に固定されたフッター

サンプル

ページの下部に常にフッターを固定したい場合は、fixed-bottom クラスを使用します。このクラスを使用すると、フッターが常に画面の下部に固定されます。

ただしフッターが固定されるため、ページのコンテンツと重なることがあります。ここではbodyとfooterに対しCSSで余白を設定し、重なりを防いでいます。

スクロールに追従するフッター

サンプル

sticky-bottom クラスを使用することで、フッターがページの下部に追従するようにするようになります。この場合、先ほどのfixed-bottom クラスで設定したようなbodyとfooterに対する余白の設定は不要です。