marginとpaddingの使い分け ― 余白で迷わないためのCSS入門

CSSを書き始めると、かなり早い段階で出会うのがmarginとpaddingです。どちらも余白を作るものですが、役割は少し違います。

marginとpaddingで迷うのは、とても自然です

「余白を空けたいだけなのに、marginなの? paddingなの?」 ここ、最初は本当に混乱しますよね。 どちらも見た目には“すき間”を作るので、違いが見えにくいんです。

でも、一度イメージでつかめると急に楽になります。 私が初めてCSSを学んだときは、家にたとえて考えるようにしていました。 その考え方が、いまでもいちばんわかりやすいと思っています。

📌 この記事のゴール
marginは外側の余白、paddingは内側の余白。 この違いを、実際のレイアウトで迷わず使えるようにします。
まずは基本の形
.box {
  margin: 24px;
  padding: 24px;
  background: #0d9488;
}

このコードだけ見ると、どちらも24pxなので同じに見えます。 でも、働いている場所が違います。 次で、家のイメージに置き換えてみましょう。

marginは家の外、paddingは家の中

要素を一軒の家だと考えてみます。 marginは、家と隣の家との距離。 つまり外側の余白です。 paddingは、家の壁と家具の間の距離。 つまり内側の余白です。

外側と内側を分けて考える
.house {
  margin: 32px;  /* 家の外側の距離 */
  padding: 24px; /* 家の中のゆとり */
}
▶ Live Demo — marginとpaddingの見える化
CONTENT 内側がpadding
緑の中の余白

斜線の外側が、まわりとの距離を作る領域。 緑色の中にある余白が、内容をゆったり見せる領域です。 こうして見ると、役割が少し分かれて見えてきませんか。

🔰 初心者向け補足
背景色が広がるのはpaddingの部分までです。 marginは要素の外側なので、背景色は基本的に塗られません。 この違いが、見た目を整えるときにとても大切です。

カードUIで使い分けてみましょう

Webサイトでよく使うカードUIを例にすると、使い分けがかなり見えやすくなります。 カードの中の文字をゆったり見せたいならpadding。 カード同士の距離を空けたいならmargingapです。

カードの内側はpadding、カード同士はgap
.card-wrap {
  display: grid;
  gap: 18px;
}

.card {
  padding: 24px;
  border-radius: 18px;
  background: white;
}
▶ Live Demo — カードUIの余白

余白で読みやすくする

カードの中にpaddingを入れると、文字が端にくっつかず、落ち着いた印象になります。

詳しく見る

カード同士はgapで離す

複数のカードを並べるときは、外側の距離としてgapを使うと管理しやすくなります。

次へ進む

動きましたか? おめでとうございます! ここまでできたなら、余白の基本はかなりつかめています。 カードの内側に余白があるだけで、デザインがぐっとやさしく見えますね。

💡 KANONのワンポイント
余白は「なんとなく空ける」より、役割で決めると整います。 中身を読みやすくする余白はpadding。 要素同士の関係を作る余白はmargingap。 これだけでも、デザインの安定感が変わります。

最初にやりがちな余白の迷子

初学者の頃は、とりあえずmarginを足して調整したくなります。 私も最初はそうでした。 でも、全部をmarginで整えようとすると、どの余白が何のためにあるのか分からなくなりやすいです。

❌ 最初はこう書きがちな例
.card {
  margin: 24px;
  background: white;
}

.card-title {
  margin-left: 20px;
}

.card-text {
  margin-left: 20px;
  margin-right: 20px;
}

もちろん、これは間違いというより「最初に通りやすい道」です。 ただ、カードの中身をまとめて内側に入れたいなら、親要素にpaddingを付けるほうがシンプルです。

✅ こう書くのがおすすめ
.card-list {
  display: grid;
  gap: 24px;
}

.card {
  padding: 24px;
  background: white;
}
▶ Live Demo — 要素同士の距離はmarginでもOK
カード 01 中身のゆとりはpaddingで作っています。
カード 02 カード同士の距離はmargin-topで作っています。
カード 03 同じルールで並ぶので、見た目が整います。
⚠️ よくあるつまずき
marginは上下で重なることがあります。 これをマージンの相殺と呼びます。 難しく感じたら、カード同士の距離は親要素のgapで管理すると、最初はかなり扱いやすいです。

迷ったときの判断ルール

最後に、手が止まったときのための判断ルールを置いておきます。 余白は感覚だけで決めると、あとから崩れやすくなります。 でも、問いかけをひとつ挟むだけで選びやすくなります。

迷ったときの考え方
/* 中身を端から離したい? */
.box {
  padding: 24px;
}

/* ほかの要素と距離を取りたい? */
.box {
  margin-bottom: 32px;
}

/* 並んだ要素の間隔をそろえたい? */
.list {
  display: grid;
  gap: 16px;
}

「中身のための余白かな?」 それとも「外との関係を作る余白かな?」 この2つだけで、かなり判断しやすくなります。

デザインでは、余白は空いているだけの場所ではありません。 読みやすさを作る場所。 視線を休ませる場所。 情報同士の関係を伝える場所です。 だからこそ、marginとpaddingを分けて考えることが大切なんです。

📌 覚えておこう
中身を包む余白はpadding。 外との距離を作る余白はmargin。 複数の要素を均等に並べるならgap。 この3つを使い分けるだけで、CSSの余白はずっと扱いやすくなります。

まとめ

  • marginは要素の外側に余白を作り、ほかの要素との距離を調整します。
  • paddingは要素の内側に余白を作り、中身を端から離して読みやすくします。
  • 背景色は基本的にpaddingの領域まで広がりますが、marginの領域には広がりません。
  • カードUIでは、カードの中身にはpadding、カード同士の間隔にはgapやmarginを使うと整理しやすいです。
  • 全部をmarginで調整しようとすると、あとから余白の意味が分かりにくくなります。
  • 迷ったら「中身のための余白か、外との距離か」を先に考えると選びやすくなります。
  • 余白はただの空白ではなく、読みやすさと情報の関係を作る大切なデザイン要素です。