固定ヘッダー分コンテンツを下げる

レイアウト Easy #css #header #fixed #offset

画面上部に固定した position: fixed のヘッダーは、ページの先頭コンテンツに重なって隠してしまいがちです。この CSS は、ヘッダーの高さを --header-h という変数で一元管理し、その同じ値を本文側の padding-top に当てることで、コンテンツが常にヘッダーのちょうど下から始まるように…

▶ プレビュー

解説

画面上部に固定した position: fixed のヘッダーは、ページの先頭コンテンツに重なって隠してしまいがちです。この CSS は、ヘッダーの高さを --header-h という変数で一元管理し、その同じ値を本文側の padding-top に当てることで、コンテンツが常にヘッダーのちょうど下から始まるようにします。高さを一カ所で持つので、ヘッダーの高さを変えても本文の余白が自動でついてきて、ずれが起きません。

こんなときに必要

  • スクロールしても上に残るグローバルナビを置いているサイト全般
  • ヘッダーの高さを PC とスマホで変える場合に、余白も連動させたいとき

調整は :root に書いた --header-h の値を変えるだけで、ヘッダー自身の高さと本文の余白の両方に反映されます。注意点として、ページ内リンクで見出しへ飛ぶとき、固定ヘッダーに飛び先が隠れることがあります。その場合は飛び先の要素に scroll-margin-top を同じ変数で指定しておくと、見出しがヘッダーの下にきれいに止まり、読みやすくなります。

よくある質問

ヘッダーの高さを変えたら本文の余白も直す必要がありますか?
ありません。高さは header-h という変数で一元管理しており、ヘッダーの高さと本文の余白の両方がその値を参照するため、変数を変えるだけで両方が同時に追従します。
ページ内リンクで見出しがヘッダーに隠れます。どうすれば?
飛び先の要素に scroll-margin-top を、同じ header-h の値で指定してください。固定ヘッダーの高さ分だけ手前で止まるようになり、見出しが隠れずに表示されます。
inspired by common WP/JS patterns / 追加日:2026-05-13
← すべてのスニペットへ戻る