モダン CSS レイアウト:Grid、Flexbox、Container Queries

前端工程(更新: 2026年5月30日)

レイアウト手法の進化

時代 手法 課題
テーブル <table> 意味論が不適切、柔軟性低い
フロート float + clearfix 高さ崩れ、複雑
配置 position: absolute 文書フローから外れる
Flexbox display: flex 一次元
CSS Grid display: grid 二次元
Container Queries @container コンポーネント単位

Flexbox:一次元レイアウト

ナビ、ツールカード行、ボタン群など1 行/1 列向き:

.tool-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}

.tool-card {
  flex: 1 1 280px; /* grow shrink basis */
  min-width: 0;    /* はみ出し防止 */
}

よく使うパターン

/* 水平・垂直中央 */
.center { display: flex; justify-content: center; align-items: center; }

/* 両端揃え */
.navbar { display: flex; justify-content: space-between; align-items: center; }

/* 縦積み */
.sidebar { display: flex; flex-direction: column; gap: 0.5rem; }

ToolsKu トップのツールグリッドは flex-wrap + flex-basis: 280px で列数を自動調整しています。


CSS Grid:二次元レイアウト

ページ全体、カテゴリページなど行と列を同時に制御する場面向き:

.page-layout {
  display: grid;
  grid-template-columns: 240px 1fr;
  grid-template-rows: auto 1fr auto;
  min-height: 100vh;
}

.sidebar  { grid-row: 1 / -1; grid-column: 1; }
.header   { grid-column: 2; }
.main     { grid-column: 2; overflow: auto; }
.footer   { grid-column: 2; }

自動フィットグリッド

.tool-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1rem;
}

auto-fill + minmax で列数を自動計算——広いと 4 列、狭いと 2 列、メディアクエリ不要。


Container Queries:コンポーネント単位のレスポンシブ

メディアクエリはビューポート幅、Container Queries は親コンテナ幅

.tool-card-container {
  container-type: inline-size;
}

@container (max-width: 400px) {
  .tool-card {
    flex-direction: column;
    padding: 0.75rem;
  }
  .tool-card .icon { display: none; }
}

@container (min-width: 401px) {
  .tool-card {
    flex-direction: row;
    padding: 1.25rem;
  }
}

利点:同じコンポーネントが狭いサイドバーと広いメインで自動適応。グローバルなメディアクエリが不要です。


ToolsKu のレイアウト実践

ツールページ構成

┌──────────────────────────────────┐
│  Header (flex, space-between)    │
├────────┬─────────────────────────┤
│ Side   │  Tool Area (grid)       │
│ nav    │  ┌─────┐ ┌─────┐      │
│ (grid  │  │Input│ │Output│      │
│  1fr)  │  └─────┘ └─────┘      │
│        │  ┌─────────────────┐  │
│        │  │   Action Bar    │  │
│        │  └─────────────────┘  │
├────────┴─────────────────────────┤
│  Footer                          │
└──────────────────────────────────┘

レスポンシブブレークポイント

ブレークポイント 変化
< 640px 1 列、サイドバーはドロワー
640–1024px 2 列ツールグリッド
> 1024px 3 列 + 固定サイドバー

便利な CSS ツール


まとめ

Flexbox は一次元、Grid は二次元、Container Queries はコンポーネント単位のレスポンシブ——この 3 つで現代 Web レイアウトの需要をほぼカバーできます。ToolsKu の UI はその実践例です。

ブラウザローカルツールを無料で試す →

#CSS#Grid#Flexbox#Container Queries#响应式