0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ヘッダー設計

0
Last updated at Posted at 2026-05-01

ヘッダーとは

  • ページ最上部の「帯」
  • サイト全体の基準点
  • 高さ・構造が安定している前提
    👉 ここで辞書⓪の用語を使う:

  • 固定枠
  • 構造として固定したい箱

ヘッダーの骨組み(レイアウト設計)

よくあるレイアウト例

固定ヘッダー/stickyヘッダー

役割分担

  • ヘッダー全体:固定枠(高さを固定)
  • 中身: ロゴ:固定枠
  • ナビ:レイアウト調整役
  • 構造:構造として固定したい箱(崩したくない)

使われる場面

  • コーポレートサイト
  • ブログなど

コード例

静的ヘッダー

役割分担

  • ヘッダー全体:固定枠(高さ固定/通常フロー)
  • 中身: ロゴ:固定枠
  • ナビ:レイアウト調整役
  • CTA:固定枠(潰れたら意味がない)
  • 構造:固定(主従が明確)

使われる場面

  • ECサイト
  • サービス紹介サイト
  • 管理画面トップ

役割を決める

  • ヘッダー全体(箱):固定枠
  • 中身
    • ロゴ:固定枠
    • ナビ等:レイアウト調整役
  • 構造:崩したくない → grid / flex

👉ここではまだ細かい配置をしない
「誰が何役か」だけ決める

ヘッダー中身のレイアウト(ロゴ・ナビ)

よくあるレイアウト例

左右2分割(最も基本)

[ LOGO ]              [ A B C ]

役割分担

  • ロゴ:固定枠
  • ナビ:レイアウト調整役
  • 構造:安定(flex / grid どちらも可)

使われる場面

  • コーポレートサイト
  • ブログ
  • LP
    👉 9割のサイトはこれ

コード例

3分割(中央基準)

[ 左 ]      [ ロゴ ]      [ 右 ]

役割分担

  • 左:固定 or 調整役
  • ロゴ:固定枠
  • 右:固定 or 調整役
  • 構造:崩したくない

使われる場面

  • ブランドサイト
  • EC
    👉 grid 向きの典型

コード例

ロゴ+フル幅ナビ

[ ロゴ ]
[ ナビ(横一列) ]

役割分担

  • 上段:固定枠
  • 下段:構造固定

使われる場面

  • 情報量の多いサイト
  • 大規模メディア
    👉 高さは増えるが構造は安定

均等配置ナビ(flex+gap)

[ A ]   [ B ]   [ C ]   [ D ]

役割分担

  • 各項目:同格
  • 並び:flex + gap

使われる場面

  • 小規模サイト
  • サブナビ

CTA付きヘッダー

[ LOGO ]      [ A B ]   [ 登録 ]

役割分担

  • ロゴ:固定枠
    -ナビ:レイアウト調整役
    CTA:固定枠(潰れない)

使われる場面

  • SaaS
  • サービスLP
  • CTAを調整役にしないのが重要

コード例

可変ヘッダー(スクロール前提)

[ ロゴ ][ ナビ ][ CTA ]

最初はナビを見せる → 読み始めたら引っ込むという挙動
(スクロールで縮む / 隠れる)

役割分担

  • 全体:固定枠
  • 中身:調整役あり
  • 構造:状態を持つ
    👉 sticky / JS 前提

使われる場面

  • コンテンツ閲覧が主役のサイト
    →ブログや技術ドキュメントなど
  • モバイルファーストなサービス
    →SNS、タスク管理ツール、チャットアプリなど

コード例

モバイル前提(縮めない)

[ ☰ ]   LOGO

役割分担

  • メニュー:固定枠(アイコン)
  • ロゴ:固定枠
  • ナビ:表示しない(折りたたみ)

使われる場面

  • モバイルファースト設計
  • 初期から折りたたみ前提
  • レスポンシブ分岐で登場(実装は後続記事)

コード例

ポイント(共通)

  • flex を使う
  • 誰が「残り」を持つか決める
  • max-width を使う:帯の中身(container)はmargin:0 auto;で中央揃え
  • padding で余白を作る

ロゴの扱い

  • 固定枠
  • 中身サイズ基準
  • 潰れない
ex.CSS
.logo
  {  
  flex-shrink: 0;
  }

👉 「固定枠」の具体例

ナビゲーションの扱い

  • レイアウト調整役
  • 余白を引き取る
    =「ロゴは必要な分だけ使い、残ったスペースはナビが全部使う」
Ex.css
.nav {
  flex: 1;
  display: flex;
  justify-content: flex-end;
}

👉 「レイアウト調整役」の具体例

NG・注意点

%で割る

Ex.css
.logo { width: 30%; }
.nav  { width: 70%; }
  • 文字が増えたら nav が足りない
  • padding 足した瞬間に 100% 超える
  • 「比率が正しそう」に見えて一番壊れやすい

全員に width を持たせる

ex.css
.logo { width: 200px; }
.nav  { width: 800px; }
  • 画面が狭いと即破綻
  • スマホ対応不可
  • 「誰も縮まなれない」設計は事故る

高さを固定して中央寄せに line-height

Ex.css
.header-right a {
  height: 65px;
  line-height: 65px;
}

高さ65pxの箱に行の高さも65pxにして文字を縦中央っぽく見せてる
→テキストが2行になるとアウトだし、フォントサイズを変えた瞬間にズレる
スマホでタップ領域がズレる危険性もアリ

sticky / fixed を使うとき

  • 高さ固定前提
  • z-index
  • overflowとの関係

ロゴ画像が想定より大きい

防御策

Ex.css
.logo img {
  max-height: 40px;
  width: auto;
}

ロゴは高さ基準で制御

翻訳で nav がはみ出る

防御策

  • menu に gap + 折り返し設計
  • login に nowrap + ellipsis

ログインが2行になる

防御策

ex.css
.login a {
  white-space: nowrap;
}

sticky + 他position で重なり事故

発生条件

Ex.css
.header {
  position: sticky;
  top: 0;
}

防御策

Ex.css
.header {
  position: sticky;
  top: 0;
  z-index: 1000;
}

flex:1 は便利だが、使いすぎないことが注意点!

  • 余白の責任者が増えすぎると挙動が読めなくなる
  • 原則余白を引き取る役は1か所だけ
    →nav / main など「バッファ役」に限定

ヘッダーで z-index が必要になる瞬間

Ex.css
.header {
  position: sticky;
  top: 0;
  z-index: 1000;
}
  • モーダル
  • ドロップダウン
  • 他セクションが overlap する
    👉 position を持った瞬間 z-index を意識する

nav の中は「ul/li」を使う

今は便宜上div + a だけど、実務だとこっちが基本↓

Ex.ma
<nav>
  <ul class="menus">
    <li><a>A</a></li>
    <li><a>B</a></li>
    <li><a>C</a></li>
  </ul>
</nav>
  • 複数の同列リンク → リスト構造
  • スクリーンリーダーに優しい
  • CSS指定もしやすい
    👉 「見た目じゃなく、意味でタグを選ぶ」

レスポンシブ時の考え方(実装は後継の記事へ)

  • ナビを縮め続けない
  • 限界が来たら「畳む」
  • 構造を変える判断
0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?