初心者向けweb講座

HTML+CSS レイアウト基礎 ─ ボックスモデル・Flexbox・Grid を理解する

更新日:2026-05-04 著者:unigram 読了目安:5分

この記事の要点

ボックスモデル・Flexbox・Gridを中心に、CSSレイアウトの基本を体系的に解説。ブロック/インラインボックスの違いから、現代的なFlexbox・Gridの書き方まで、コードサンプル付きで学べます。

HTMLとCSSを用途やパーツごとに分けて、より深く理解していきましょう。ここではレイアウトの根幹となるボックスモデルと、現代的なレイアウト手法であるFlexboxGridを取り上げます。

レイアウト基礎:ブロックボックスとインラインボックス

CSSにおける要素の振る舞いは、大きく「ブロックボックス」と「インラインボックス」の2種類に分かれます。

ブロックボックス(display: block / table)

ブロックボックスは上から下へ縦方向に配置されます。前後には改行が伴い、1つの段落としてレイアウトされます。

  • 幅(width)や高さ(height)を指定できる
  • 幅を指定しなければ親要素の幅全体に広がる

インラインボックス(display: inline / inline-block)

インラインボックスは左から右へ横方向に配置されます。前後に改行は伴わず、行内の一部としてレイアウトされます。

  • 幅(width)や高さ(height)を指定できない
  • 上下の margin を指定できない(例外あり)

ボックスモデル

CSSのボックスモデルは、以下の4つの領域で構成されています。

領域 説明 プロパティ
divなどのcontent 要素の内容が表示される領域 width / heightを指定
padding contentの内側の余白 padding
border 要素の枠線 border
margin 要素の外側の余白 margin

ボックスの総サイズは content + padding + border + margin の合計で算出されます。

 

 

box-sizing: border-box の活用

box-sizing: border-box; を設定すると、borderpaddingwidth の内側に含めて計算させることができます。幅の管理が直感的になるため、多くのプロジェクトで使われています。

.box {
  width: 300px;       /* 中身の幅 */
  height: 200px;      /* 中身の高さ */
  padding: 20px;      /* 内側の余白(上下左右に 20px ずつ) */
  border: 5px solid;  /* 境界線(上下左右に 5px ずつ) */
  margin: 30px;       /* 外側の余白(上下左右に 30px ずつ) */
}

/* border を内側にする場合 */
.box-border-box {
  width: 300px;
  padding: 50px;
  border: 10px solid blue;
  box-sizing: border-box;
}

カラムレイアウト・グリッドレイアウト

複数の要素を横に並べる「カラムレイアウト」には、主に FlexboxGrid が使われます。

手法 得意なレイアウト 代表的な用途
Flexbox 1方向(横 or 縦)の整列 ナビゲーション、カードの横並び
Grid 縦横両方を同時に制御 マガジン風、ギャラリー、ダッシュボード
float テキストの回り込み 画像 + テキストの回り込み(古いサイト保守)

Flexbox の使い方

Flexboxは親要素に display: flex; を指定することで有効になります。親(コンテナ)が子(アイテム)の並びをコントロールします。

よく使う親への命令(4つ)

プロパティ 役割 よく使う値
justify-content 横方向の整列 center / space-between
align-items 縦方向の整列 center / stretch
flex-direction 並べる向き row(横)/ column(縦)
flex-wrap 折り返し wrap(自動改行)
<div class="flex-container">
  <div class="flex-item">1</div>
  <div class="flex-item">2</div>
  <div class="flex-item">3</div>
</div>
.flex-container {
  display: flex;                    /* Flexbox を有効化 */
  justify-content: space-between;   /* アイテム間を均等に配置 */
  gap: 10px;                        /* アイテム間の隙間 */
}

.flex-item {
  background-color: #f0f0f0;
  padding: 60px 20px;
  flex: 1;                          /* アイテムの幅を均等に */
  text-align: center;
}

Grid の使い方

GridはFlexboxが「1列の整列」を得意とするのに対し、縦と横の両方を同時に制御するレイアウト手法です。親要素に display: grid; を指定し、「網目(グリッド)」を作ります。

親への基本命令(網目を作る)

プロパティ 役割
grid-template-columns 列の幅を決める 200px 1fr 1fr
grid-template-rows 行の高さを決める auto 200px
gap タイル間の隙間 20px

単位 fr(fraction) はGrid専用の単位で、残りの空間を比率で分け合います。たとえば 1fr 1fr 1fr と指定すると3列を均等に分割できます。

<div class="grid-container">
  <div class="grid-item">A</div>
  <div class="grid-item">B</div>
  <div class="grid-item">C</div>
  <div class="grid-item">D</div>
  <div class="grid-item">E</div>
  <div class="grid-item">F</div>
</div>
.grid-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* 3列、幅を自動調整 */
  gap: 15px;                              /* グリッドの隙間 */
}

.grid-item {
  background-color: #d1e7dd;
  padding: 30px;
  text-align: center;
}

 

カード・タイルレイアウト

Gridレイアウトの応用として、カード・タイルレイアウトがあります。画像を敷き詰めて一覧表示するWebサイト(ポートフォリオやECサイトなど)で特に活躍するレイアウト方法です。

float による回り込み

現代のレイアウトではFlexboxやGridが主流となりましたが、テキストを画像に回り込ませるという本来の用途や、古いサイトの保守では float が登場することがあります。

img {
  float: left;  /* または right */
  margin: 0 16px 8px 0;
}

まとめ

ここではHTMLとCSSのレイアウトに関する基本的な概念を整理しました。

  • ブロックボックス は縦に積み重なり、インラインボックス は横に並ぶ
  • ボックスモデルcontent / padding / border / margin の4層構造。box-sizing: border-box で直感的に幅管理できる
  • Flexbox は1方向の整列に強く、ナビやカード列に最適
  • Grid は縦横を同時に制御でき、複雑なレイアウトも統一感を持って表現できる
  • float は回り込みが本来の用途。新規開発より保守や特定表現で使う

FlexboxやGridのすべてのプロパティを最初から覚える必要はありません。実際にコードを書きながら少しずつ慣れていき、わからないことはWeb検索でテクニックを調べながら実践していきましょう。

この記事を書いた人

unigram
web、印刷、映像などの制作をしています。@京都、フリーランス18年目。 大学で講師もしています。 自身の備忘録も兼ねて、Web制作・WordPress・SEO・GA4・生成AI活用をテーマに情報発信しています。わかりやすく優しい内容で記事作成を心がけています。