【HTML/CSS入門⑥】ボックスモデルを理解しよう|paddingとmarginの違いって何?

PCの前で女性がこの記事についての説明をする画像です その他

はじめに

前回はクラスとIDを学んで、同じタグでもデザインを変えられるようになりましたね!

今回はいよいよボックスモデルに入ります。

「paddingを増やしたのになんか違う…」「marginってどこに効いてるの?」

CSSを書いていると、この2つで混乱することがよくあります。でも一度理解してしまえば、レイアウトがぐっとコントロールしやすくなります。一緒に整理していきましょう!

この記事でできるようになること

この記事を読み終えると、paddingとmarginの違いがわかり、余白を自在に調整できるようになります。「なんとなくわかった!」でOKです。手を動かしながら覚えていきましょう。

ボックスモデルとは?

HTMLのすべての要素は、目に見えない箱(ボックス)として扱われます。

その箱は4つの層でできています。

  • content:実際のテキストや画像
  • padding:内側の余白(コンテンツと枠線の距離)
  • border:枠線
  • margin:外側の余白(他の要素との距離)
margin,border,padding,contentの説明です

paddingとは?

paddingは、コンテンツと枠線(border)の間の内側の余白です。

.box {
  background-color: #e8f0fe;
  padding: 16px;
}

paddingを増やすと、箱の中身が枠から離れます。背景色はpaddingの範囲にも広がります。

marginとは?

marginは、要素と要素の間の外側の余白です。

.box {
  background-color: #e8f0fe;
  margin: 32px;
}

marginを増やすと、他の要素との距離が広がります。背景色はmarginには広がりません。

paddingとmarginの違いをまとめると

paddingmargin
位置内側の余白外側の余白
背景色適用される適用されない
用途文字と枠の間隔を空けたい要素同士の距離を空けたい

上下左右を個別に指定する

paddingもmarginも、上下左右を個別に指定できます。

.box {
  padding-top: 8px;
  padding-right: 16px;
  padding-bottom: 8px;
  padding-left: 16px;
}

まとめて書くこともできます(上→右→下→左の順)。

.box {
  padding: 8px 16px 8px 16px;
}

上下・左右が同じ場合はさらに短く書けます。

/* 上下8px、左右16px */
.box {
  padding: 8px 16px;
}

実践:自己紹介ページに適用しよう

前回の自己紹介ページに、ボックスモデルを意識したスタイルを追加してみましょう!

<!DOCTYPE html>
<html>
  <head>
    <title>私の自己紹介ページ</title>
    <style>
      body {
        background-color: #f9f9f9;
        color: #333333;
        font-size: 16px;
        margin: 0;
      }

      #main-title {
        color: #ffffff;
        background-color: #3a86ff;
        font-size: 32px;
        padding: 24px 16px;
        margin: 0;
        text-align: center;
      }

      .section-title {
        color: #3a86ff;
        font-size: 22px;
        margin: 32px 0 8px;
        border-left: 4px solid #3a86ff;
        padding-left: 12px;
      }

      .profile-card {
        background-color: #ffffff;
        border: 1px solid #dddddd;
        border-radius: 8px;
        padding: 24px;
        margin: 16px 0;
      }

      .highlight {
        background-color: #fff9c4;
        padding: 4px 8px;
        border-radius: 4px;
      }
    </style>
  </head>
  <body>
    <h1 id="main-title">私の自己紹介ページ</h1>

    <h2 class="section-title">プロフィール</h2>
    <div class="profile-card">
      <p>はじめまして!プログラミングを勉強中の<span class="highlight">Sue</span>です。</p>
      <p>コーヒーを飲みながらコードを書くのが好きです。</p>
    </div>
  </body>
</html>

.profile-cardに注目してください。paddingで内側に余白を作り、marginで上下の間隔を調整しています。borderと組み合わせることで、カードのような見た目になりますよ。

よくあるミス

margin: 0 auto という書き方を見たことがあるかもしれません。これは要素を中央寄せにするときの定番の書き方です。ただし、要素にwidthが指定されていないと効きません。

.container {
  width: 600px;
  margin: 0 auto; /* 左右中央に配置 */
}

まとめ

今回はボックスモデルを学びました。

  • padding:内側の余白。背景色が広がる
  • margin:外側の余白。要素間の距離を調整する
  • 上下左右を個別に、またはまとめて指定できる
  • 迷ったらブラウザの開発者ツールでボックスを確認してみよう!

「なんか思ったより隙間が空いてる…」というとき、原因はたいていpaddingかmarginです。この2つを意識するだけで、レイアウト調整がぐっと楽になります。

次回はFlexboxに入ります。横並びのレイアウトを簡単に作れる、現代のCSSに欠かせない機能です。「なんで横に並ばないの!」という悩みを一気に解決しますよ。お楽しみに!

コメント

タイトルとURLをコピーしました