Webレイアウトの進化は止まりません。かつての floatclearfix の時代は終わり、現在は FlexboxCSS Grid が標準となりました。

Flexbox: 1次元のレイアウト#

Flexbox(Flexible Box Layout)は、アイテムを列または行の1方向に配置するために設計されています。

基本的な中央揃え#

これ以上簡単な中央揃えはありません。

.container {
  display: flex;
  justify-content: center; /* 水平方向 */
  align-items: center; /* 垂直方向 */
  height: 100vh;
}

実践例:ナビゲーションバー#

MDN Web Docsのようなサイトのヘッダーを想像してください。

.nav {
  display: flex;
  justify-content: space-between;
  padding: 1rem;
}

.nav-links {
  display: flex;
  gap: 20px;
  list-style: none;
}

CSS Grid: 2次元のレイアウト#

Gridは、行と列の2方向を同時に制御できる強力なシステムです。ページ全体のレイアウトに適しています。

聖杯レイアウト (Holy Grail Layout)#

.grid-container {
  display: grid;
  grid-template-areas:
    'header header'
    'sidebar content'
    'footer footer';
  grid-template-columns: 200px 1fr;
  grid-template-rows: auto 1fr auto;
  min-height: 100vh;
}

.header {
  grid-area: header;
}
.sidebar {
  grid-area: sidebar;
}
.content {
  grid-area: content;
}
.footer {
  grid-area: footer;
}

使い分けの結論#

機能FlexboxCSS Grid
次元1次元 (行 or 列)2次元 (行 and 列)
用途コンポーネント、整列ページ全体のレイアウト
基準コンテンツベースレイアウトベース

両者を組み合わせることで、柔軟かつ堅牢なUIを構築できます。例えば、ページ全体の枠組みをGridで作り、その中の各カードコンポーネントの中身をFlexboxで整える、といった使い方が一般的です。