6日でできる 新HTML入門|CSSによる余白の指定

余白を整えると、ページはもっと読みやすくなる。paddingとmarginを使い分けて、見た目にゆとりのあるWebデザインを作ろう。

Webページを見やすく整えるうえで、余白はとても大切な役割を持っています。文字や画像、ボックスがぎゅうぎゅうに詰まっていると、内容が読みにくくなり、どこに注目すればよいのか分かりづらくなります。反対に、適切な余白があると、情報のまとまりが見えやすくなり、ページ全体に落ち着いた印象が生まれます。

CSSで余白を指定するときは、主にpaddingとmarginを使います。paddingは要素の内側に作る余白です。文字と枠線の間にスペースを入れたいときに使います。marginは要素の外側に作る余白です。要素同士の間隔を空けたいときに使います。

たとえば、カード型のボックスでは、文字が枠線に近すぎると窮屈に見えます。この場合はpaddingを使って、内側に余白を作ります。一方、カードとカードの間を空けたいときはmarginを使います。このように、内側の余白と外側の余白を使い分けることで、読みやすく整理されたレイアウトを作れます。

余白は、単に空白を作るだけの指定ではありません。情報の区切り、視線の流れ、ページ全体のバランスを整えるための大切なデザイン要素です。ここでは、paddingとmarginの基本から、上下左右の個別指定、ショートハンド指定、マージンの相殺、中央配置、ボックスモデルとの関係まで、具体的なHTMLサンプルを使いながら学んでいきます。

paddingは要素の内側に余白を作る

paddingは、要素の内側に余白を作るCSSです。文字や画像などの内容と、枠線や背景の端との間にスペースを入れたいときに使います。

たとえば、背景色を付けたボックスの中に文字を入れる場合、paddingがないと文字が端にくっついて見えてしまいます。paddingを指定すると、文字のまわりにゆとりができ、読みやすい見た目になります。

paddingの基本的な考え方

指定役割
padding上下左右の内部余白をまとめて指定する
padding-top上の内部余白を指定する
padding-right右の内部余白を指定する
padding-bottom下の内部余白を指定する
padding-left左の内部余白を指定する

paddingは、要素の背景色が表示される範囲の内側に含まれます。つまり、背景色を付けた要素にpaddingを指定すると、余白部分にも背景色が広がります。

paddingのショートハンド指定

paddingは、値の数によって指定される場所が変わります。1つから4つまでの値を指定でき、半角スペースで区切って書きます。

値の数指定される場所
1つ上下左右すべてpadding: 20px;
2つ上下、左右padding: 20px 10px;
3つ上、左右、下padding: 20px 10px 30px;
4つ上、右、下、左padding: 20px 10px 30px 15px;

4つ指定するときの順番は、上、右、下、左です。時計回りに指定すると覚えると分かりやすくなります。

図1:paddingで要素の内側に余白を作る

この図から分かること

paddingは、要素の内側に作る余白です。文字と枠線の間にスペースを入れることで、内容が読みやすくなります。背景色を指定した要素では、padding部分にも背景色が広がるため、カードやメッセージボックスの見た目を整えるときに役立ちます。

paddingで読みやすいボックスを作る

まずは、paddingのショートハンド指定を使って、ボックスの内側に余白を作る例を見ていきましょう。

ファイル名: Lesson15-1.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>内部余白の基本</title>
  <style>
    body {
      font-family: sans-serif;
      background-color: #FAFAFA;
    }

    .message-box {
      background-color: #FFF3E0;
      border: solid 2px #F57C00;
      width: 320px;
      margin: 24px auto;
      padding: 24px 12px;
      line-height: 1.7;
    }
  </style>
</head>
<body>
  <div class="message-box">
    paddingを指定すると、文字と枠線の間にゆとりが生まれます。
    上下を広めにすると、落ち着いた読みやすいボックスになります。
  </div>
</body>
</html>

ブラウザの表示例

このHTMLでは、div要素にmessage-boxというclassを付けています。CSSでは、padding: 24px 12px;を指定しています。

この指定では、上下の内部余白が24px、左右の内部余白が12pxになります。上下に少し広めの余白を作ることで、文章がゆったり見えます。左右にも余白があるため、文字が枠線に近づきすぎず、読みやすいボックスになります。

また、margin: 24px auto;も指定しています。これは外側の余白に関する指定です。上下には24pxの外部余白を作り、左右はautoにすることで、幅を指定したボックスを中央に配置しています。paddingとmarginは同じ余白に見えることがありますが、paddingは内側、marginは外側という違いがあります。

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

paddingはまとめて指定するだけでなく、上下左右を個別に指定することもできます。デザインによっては、上だけ広くしたい、左だけ余白を多めにしたい、といった場面があります。

そのような場合は、padding-top、padding-right、padding-bottom、padding-leftを使います。

paddingの個別指定でできること

CSS指定する場所使いやすい場面
padding-top上の内部余白見出しの上にゆとりを出したいとき
padding-right右の内部余白右端の文字詰まりを防ぎたいとき
padding-bottom下の内部余白下側に余裕を作りたいとき
padding-left左の内部余白左側に強調線やアイコンがあるとき

ファイル名: Lesson15-2.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>内部余白の個別指定</title>
  <style>
    body {
      font-family: sans-serif;
      background-color: #FAFAFA;
    }

    .guide-card {
      background-color: #E8F5E9;
      border: solid 2px #388E3C;
      width: 300px;
      margin: 24px auto;
      padding-top: 32px;
      padding-right: 12px;
      padding-bottom: 8px;
      padding-left: 24px;
      line-height: 1.7;
    }
  </style>
</head>
<body>
  <div class="guide-card">
    上の余白を広くし、左にも少し余裕を持たせた案内カードです。
    余白の量を変えると、文字の位置や見た目の印象も変わります。
  </div>
</body>
</html>

ブラウザの表示例

この例では、上下左右のpaddingを個別に指定しています。上の余白を32px、右を12px、下を8px、左を24pxにしています。

上側に広めの余白を作ると、ボックス全体がゆったりした印象になります。左側にも余白を少し多めに取ることで、文章の開始位置が落ち着いて見えます。逆に、下の余白は少なめにしているため、ボックスの下側は少し引き締まった印象になります。

個別指定は、細かな調整をしたいときに便利です。ただし、毎回4つのプロパティを書くとCSSが長くなるため、基本はpaddingのショートハンドを使い、必要なときだけ個別指定を使うと整理しやすくなります。

marginは要素の外側に余白を作る

marginは、要素の外側に余白を作るCSSです。要素同士の間隔を空けたいときに使います。

paddingが要素の内側の余白であるのに対して、marginは要素の外側の余白です。たとえば、カードとカードの間を空ける、見出しと本文の間隔を調整する、ボックスを中央に配置する、といった場面で使います。

paddingとmarginの違い

CSS余白ができる場所主な目的
padding要素の内側内容と枠線の間を空ける
margin要素の外側要素同士の間隔を空ける

この違いはとても大切です。文字が枠に近すぎる場合はpaddingを使います。ボックス同士が近すぎる場合はmarginを使います。

図2:paddingとmarginの違い

この図から分かること

paddingは要素の内側、marginは要素の外側に作る余白です。文字と枠線の間を広げたいときはpadding、要素同士の距離を空けたいときはmarginを使います。この違いを理解すると、レイアウトの調整がしやすくなります。

marginで要素同士の間隔を調整する

marginもpaddingと同じように、1つから4つの値で指定できます。値の数による考え方もpaddingと同じです。

marginのショートハンド指定

値の数指定される場所
1つ上下左右すべてmargin: 20px;
2つ上下、左右margin: 10px 0;
3つ上、左右、下margin: 20px auto 30px;
4つ上、右、下、左margin: 10px 20px 30px 40px;

marginは、要素の外側にスペースを作るため、背景色はmargin部分には広がりません。背景色が広がるのは、content、padding、borderの範囲です。

ファイル名: Lesson15-3.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>外部余白の基本</title>
  <style>
    body {
      font-family: sans-serif;
      background-color: #FAFAFA;
    }

    .notice {
      background-color: #FFEBEE;
      border: solid 1px #D32F2F;
      width: 280px;
      padding: 14px;
      margin: 12px 0;
      line-height: 1.7;
    }
  </style>
</head>
<body>
  <div class="notice">
    重要なお知らせです。上下にmarginを指定して、前後の要素と間隔を空けています。
  </div>

  <div class="notice">
    こちらは2つ目のお知らせです。要素同士の間に余白があるため、読みやすくなります。
  </div>
</body>
</html>

ブラウザの表示例

この例では、noticeクラスにmargin: 12px 0;を指定しています。上下の外部余白が12px、左右の外部余白が0になります。

2つのnoticeが縦に並んでいますが、marginによって要素同士の間にスペースができます。もしmarginがなければ、2つのボックスが近づきすぎて、窮屈な印象になります。

要素同士の間隔を整えると、情報のまとまりが分かりやすくなります。特に、お知らせ、記事一覧、カード、メニューなどでは、marginをうまく使うことで読みやすい配置になります。

marginを個別に指定する

marginも、paddingと同じように上下左右を個別に指定できます。

marginの個別指定

CSS指定する場所
margin-top上の外部余白
margin-right右の外部余白
margin-bottom下の外部余白
margin-left左の外部余白

たとえば、見出しの下だけ余白を広げたい場合はmargin-bottomを使います。ボックスの上だけ余白を空けたい場合はmargin-topを使います。

h3 {
  margin-bottom: 16px;
}

この指定では、h3の下側に16pxの外部余白ができます。見出しと本文の間隔を調整したいときに使いやすい指定です。

マージンの相殺を理解する

marginには、少し注意が必要な動きがあります。それがマージンの相殺です。

縦方向に並んだ要素同士のmarginは、単純に足し算されないことがあります。隣り合う要素の上下のmarginが重なった場合、大きいほうのmarginだけが適用されることがあります。

たとえば、上の要素にmargin-bottom: 30px;、下の要素にmargin-top: 10px;が指定されている場合、間隔は40pxではなく30pxになることがあります。これがマージンの相殺です。

マージンの相殺の例

上の要素の下margin下の要素の上margin実際の間隔
30px10px30px
20px20px20px
10px40px40px

マージンの相殺は、主に縦方向のmarginで起こります。横方向のmarginでは通常このような相殺は起こりません。

この動きを知らないと、marginを指定したのに思ったより間隔が広がらない、と感じることがあります。縦方向の余白を調整するときは、上下どちらの要素にmarginを付けるかを決めておくと管理しやすくなります。

marginで要素を中央に配置する

marginは、外側の余白を作るだけでなく、要素を中央に配置するときにも使えます。幅を指定したブロック要素に対して、左右のmarginをautoにすると、水平中央に配置できます。

.center-box {
  width: 240px;
  margin: 20px auto;
}

この指定では、上下に20pxの外部余白を作り、左右の余白を自動調整します。その結果、要素が中央に配置されます。

ファイル名: Lesson15-4.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>マージン相殺と中央配置</title>
  <style>
    body {
      font-family: sans-serif;
      background-color: #FAFAFA;
    }

    .box-a {
      background-color: #E3F2FD;
      width: 220px;
      margin: 30px 0;
      padding: 10px;
      box-sizing: border-box;
    }

    .box-b {
      background-color: #C5CAE9;
      width: 220px;
      margin: 10px 0;
      padding: 10px;
      box-sizing: border-box;
    }

    .center-box {
      background-color: #FFF9C4;
      border: solid 2px #FBC02D;
      width: 220px;
      margin: 24px auto;
      padding: 12px;
      box-sizing: border-box;
      text-align: center;
    }
  </style>
</head>
<body>
  <div class="box-a">上と下に30pxのmarginを指定したボックスです。</div>
  <div class="box-b">上と下に10pxのmarginを指定したボックスです。</div>

  <div class="center-box">
    左右のmarginをautoにすると、幅を指定した要素を中央に配置できます。
  </div>
</body>
</html>

ブラウザの表示例

このHTMLでは、box-aとbox-bの間にマージンの相殺が関係します。box-aには上下30px、box-bには上下10pxのmarginが指定されています。縦に隣り合うmarginは重なるため、2つのボックスの間隔は30pxとして扱われます。

また、center-boxではmargin: 24px auto;を指定しています。上下には24pxの余白を作り、左右はautoにしています。center-boxにはwidth: 220px;が指定されているため、左右の余白が自動で調整され、ボックスが中央に配置されます。

中央配置をしたい場合は、widthとmargin: auto;を組み合わせるのが基本です。widthが指定されていないと、ブロック要素は横幅いっぱいに広がるため、中央に寄せても見た目の変化が分かりにくくなります。

ボックスモデルで余白の位置を理解する

CSSの余白を正しく理解するには、ボックスモデルを知っておくことが大切です。HTMLの要素は、content、padding、border、marginという領域を持っています。

ボックスモデルの構造

領域説明
content文字や画像などの中身
paddingcontentの外側にある内部余白
borderpaddingの外側にある枠線
marginborderの外側にある外部余白

widthとheightは、初期状態ではcontentの大きさを指定します。つまり、paddingやborderはwidthやheightの外側に追加されます。

ボックスモデルでの余白の位置づけ

width/height と余白・枠線の関係

ボックスモデルの図解

たとえば、次のような指定があるとします。

.box {
  width: 400px;
  padding: 20px;
  border: solid 10px #333333;
}

この場合、実際に表示される横幅は次のように計算されます。

項目
contentの横幅400px
左右のpadding20px + 20px = 40px
左右のborder10px + 10px = 20px
実際の横幅460px

このように、widthだけを見ると400pxですが、paddingとborderを含めると実際には460pxになります。marginは要素の外側の余白なので、要素そのものの横幅には含まれません。ただし、ページ上で占有するスペースを考えるときにはmarginも意識する必要があります。

図3:ボックスモデルで見るpaddingとmarginの位置

この図から分かること

ボックスモデルでは、中心にcontentがあり、その外側にpadding、border、marginが配置されます。paddingは要素の内側、marginは要素の外側です。widthは基本的にcontentの幅を指定するため、paddingやborderを追加すると、実際に表示されるサイズは大きくなります。

box-sizingでサイズ計算を分かりやすくする

paddingやborderを指定すると、実際の表示サイズがwidthより大きくなることがあります。これを分かりやすく扱うためによく使われるのがbox-sizingです。

box-sizingの主な値

指定サイズ計算
box-sizing: content-box;widthはcontentだけの幅になる
box-sizing: border-box;widthにpaddingとborderも含める

初期状態では、多くの要素がcontent-boxとして扱われます。この場合、widthにpaddingとborderが追加されて実寸が大きくなります。

一方、border-boxを指定すると、paddingとborderを含めて指定したwidthに収めてくれます。

.box {
  width: 400px;
  padding: 20px;
  border: solid 10px #333333;
  box-sizing: border-box;
}

この指定では、実際の横幅は400pxのままです。paddingとborderが400pxの内側に含まれるため、レイアウトの計算がしやすくなります。

カードやボックスを横に並べるレイアウトでは、box-sizing: border-box;を使うと、幅のズレを防ぎやすくなります。

余白指定でよく使うプロパティ

ここまでに登場した余白やサイズに関するCSSを整理しておきます。

種類記述例説明
paddingpadding: 20px 10px;内部余白をまとめて指定する
padding-toppadding-top: 30px;上の内部余白を指定する
padding-rightpadding-right: 10px;右の内部余白を指定する
padding-bottompadding-bottom: 8px;下の内部余白を指定する
padding-leftpadding-left: 24px;左の内部余白を指定する
marginmargin: 20px auto;外部余白をまとめて指定する
margin-topmargin-top: 30px;上の外部余白を指定する
margin-rightmargin-right: auto;右の外部余白を指定する
margin-bottommargin-bottom: 16px;下の外部余白を指定する
margin-leftmargin-left: auto;左の外部余白を指定する
widthwidth: 300px;contentの横幅を指定する
heightheight: 200px;contentの高さを指定する
borderborder: solid 2px #333333;枠線を指定する
box-sizingbox-sizing: border-box;サイズ計算の方法を指定する

paddingとmarginは、どちらも余白を作るためのCSSですが、役割が違います。paddingは要素の内側にゆとりを作り、marginは要素の外側に間隔を作ります。

この2つを使い分けられるようになると、Webページの見た目をかなり整えやすくなります。文章を読みやすくしたいときはpadding、要素同士の距離を調整したいときはmargin、というように目的に合わせて考えると分かりやすくなります。

使用タグ一覧と解説

この学習で登場した主なHTMLタグを整理しておきます。

タグ用途主な属性
<html>HTML文書全体を表すlang
<head>文字コードやタイトルなどの情報を書くなし
<meta>文字コードを指定するcharset
<title>ブラウザのタブに表示されるタイトルを指定するなし
<style>HTML内にCSSを書くなし
<body>ブラウザに表示される内容を書くなし
<div>汎用的なまとまりを作るclass
<p>段落を表すclass

divは、ボックスやカードのようなまとまりを作るときによく使います。classを付けることで、特定のdivだけにCSSを適用できます。

pは文章の段落を表すタグです。段落にもpaddingやmarginを指定できるため、本文の読みやすさを調整するときに役立ちます。

styleは、HTMLファイルの中にCSSを書くためのタグです。学習用の短いサンプルでは、styleを使うとHTMLとCSSの関係を確認しやすくなります。

余白を指定するときに意識したいこと

余白は、広ければよいというものではありません。広すぎると情報同士の関係が分かりにくくなり、狭すぎると窮屈で読みにくくなります。大切なのは、内容のまとまりに合わせて適切な余白を作ることです。

文章を読みやすくしたいときは、文字の周囲にpaddingを入れます。ボックス同士の間隔を整えたいときはmarginを使います。ページ全体を中央に寄せたいときは、幅を指定したうえで左右のmarginをautoにします。

また、width、padding、borderを組み合わせると、実際の表示サイズが思ったより大きくなることがあります。サイズのズレを防ぎたい場合は、box-sizing: border-box;を使うと扱いやすくなります。

余白の指定は、見た目の調整だけでなく、読みやすさや情報整理にも直結します。paddingとmarginの違いを理解し、必要な場所に適切な余白を入れることで、すっきりとした分かりやすいWebページを作れるようになります。