8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【CSS】position: sticky で固定ヘッダーを実装する

Last updated at Posted at 2024-09-27

はじめに

こんにちは。HRBrainでオウンドメディア・ランディングページの開発を担当している渡邉です。

Webサイト制作でよく使う固定ヘッダー。

この記事では、 position: sticky で固定ヘッダーを実装するメリットについての解説と、実装例を紹介します。

position: fixed の問題点

position: fixed は、要素をビューポート(ブラウザの表示領域)に対して固定表示する際に便利なプロパティです。

しかし、 position: fixed を使用すると、固定された要素が他の要素の上に重なって表示されてしまうため、コンテンツが隠れる問題が発生します。

これは、position: fixed を適用することでヘッダーが通常フローから外れるためです。

例えば、以下のようなHTML構造とCSSスタイルシートを考えてみましょう。

See the Pen Header position fixed by Tasuku Watanabe (@tasukuwatanabe) on CodePen.

上記の例では、ヘッダーを画面上部に固定表示するために position: fixed を使用しています。

しかし、ヘッダーが通常フローから外れ、コンテンツがヘッダーの下に隠れてしまうため、 margin-top でコンテンツを下にずらす調整が必要になります。

See the Pen Header position fixed - margin by Tasuku Watanabe (@tasukuwatanabe) on CodePen.

この margin-top の値は、ヘッダーの高さに合わせて調整する必要があり、ヘッダーの高さが変更された場合は、 margin-top の値も変更する必要があり、メンテナンスが煩雑になる可能性があります。

例えば、以下のように、ページ最上部に他の要素を追加する場合にも、margin-top を再調整するきっかけになります。

header_position_fixed_trouble.png

position: sticky で実現する固定ヘッダー

一方、position: sticky を使用することで、 position: fixed のように要素が他の要素の上に重なって表示されることを防ぎ(通常フローから外れない)、自然なスクロール動作を実現できます。

初期状態では通常の要素と同じように配置されますが、スクロールが指定した閾値に達すると、その位置で固定表示されるようになります。

先ほどのHTML構造を position: sticky を使用して書き換えてみましょう。

See the Pen Header position sticky by Tasuku Watanabe (@tasukuwatanabe) on CodePen.

上記の例では、ヘッダーに position: stickytop: 0 を指定することで、ヘッダーが画面上部に固定表示されるようになります。

position: fixed のようにコンテンツを下にずらすための margin-top の設定が不要になり、変更漏れによるレイアウトの崩れを防ぐことができます。

まとめ

本記事では、 position: sticky を使用した固定ヘッダーの実装方法を紹介しました。

position: sticky は通常フローから外れないため、後続の要素に対するmargin設定も不要です。

固定ヘッダーの実装に最適なので、ぜひ使ってみてください。

PR

HRBrainではフロントエンドエンジニア(コミュニケーションデザイン)の採用も行なっているので、ぜひ!

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?