Kodokon kodokon.com

ボックスモデル

すべての要素がコンテンツ・パディング・ボーダー・マージンからなるボックスであることを理解し、box-sizingを使いこなしましょう。

10 分 · 3 問

このレッスンを Kodokon で開く

CSSでは、たとえ目に見えなくても、ページ上のすべての要素は長方形のボックスです。そのボックスには、壁に掛けた額入りの絵のように4つの層があります。コンテンツ(絵そのもの)、パディング(絵と額の間の白いマット)、ボーダー(額そのもの)、そしてマージン(額と壁の他の絵との間の空きスペース)です。これがボックスモデルと呼ばれるものです。

これらの層を制御するのは3つのプロパティです。padding はコンテンツとボーダーの間の内側のスペースを設定します。border はボーダーを描きます。太さ、スタイル(実線なら solid)、色を与えます。margin外側のスペースを設定し、隣り合う要素を押しのけます。これらの距離はすべてピクセル(px)で表します。

CSS
.card {
  padding: 16px;
  border: 2px solid black;
  margin: 24px;
}
内側に16px、黒い線、周囲すべてに24px。

padding-toppadding-rightpadding-bottompadding-left で各辺を別々に調整でき、margin も同様です。省略記法もあります。2つの値を指定すると、1つ目は上下に、2つ目は左右に適用されます。つまり padding: 8px 16px; は上下に8ピクセル、左右に16ピクセルという意味です。

CSS
.card {
  padding: 8px 16px;
  margin-top: 32px;
  margin-bottom: 8px;
}
2つの値の省略記法と、辺ごとの調整。

よくある落とし穴です。既定では、width: 200px; と書くと(width プロパティは幅を設定します)、その200ピクセルはコンテンツだけをカバーします。パディングとボーダーはその上に加えられるのです。width: 200pxpadding: 16pxborder: 2px のボックスは、実際には幅 200 + 16 + 16 + 2 + 2 = 236 ピクセルを占めます。box-sizing: border-box; プロパティがこれを解決します。宣言した幅にパディングとボーダーが含まれるようになります。ボックスは本当に幅200ピクセルになり、代わりに縮むのはコンテンツです。

CSS
* {
  box-sizing: border-box;
}

.card {
  width: 200px;
  padding: 16px;
  border: 2px solid black;
}
border-box を使えば、.card はちょうど幅200pxになります。

理解度チェック

このレッスンの要点をしっかり覚えているか確認しましょう。

  1. ボックスのコンテンツとボーダーの間のスペースを設定するのはどのプロパティですか?
    • margin
    • padding
    • border
    • width
  2. box-sizing: border-box なしの場合、width: 100pxpadding: 10pxborder: 5px solid black のボックスが占める合計の幅はいくつですか?
    • 100ピクセル
    • 115ピクセル
    • 130ピクセル
    • 110ピクセル
  3. 省略記法 margin: 10px 20px; は何を意味しますか?
    • 左右に10px、上下に20px
    • 上下に10px、左右に20px
    • 上に10px、下に20px