ボックスモデル
ボックスに width: 200px、16px のパディング、2px の枠線を指定すると、既定では画面の横幅を 200 ではなく 236 ピクセル使います。
すべての要素はボックス
ページをレイアウトするために、ブラウザーはすべての要素を長方形に変えます。どのボックスにも、内側から外側へ四つの層があります。コンテンツ領域には文字や画像が入ります。パディングはボックスの内側、コンテンツと枠線のあいだの余白で、ボックスの背景色で塗られます。枠線(border)はパディングのまわりの線です。マージンは枠線の外側の余白で、ほかのボックスを押しのけます。マージンはいつも透明です。ブラウザーの開発者ツールで要素を調べると、ちょうどこの図が数値つきで表示されます。
四辺をまとめて書く一括指定
padding、margin、border-width には一つから四つの値を書けます。順番は上から時計回りです。padding: 16px は四辺すべてを指定します。padding: 8px 16px は上下を 8、左右を 16 にします。padding: 4px 8px 12px 16px は上、右、下、左の順に指定します。margin-top のように、一辺だけを指定することもできます。border: 2px solid #333 は太さ、スタイル、色をまとめて指定します。solid や dashed のようなスタイルがないと、枠線はまったく描かれません。
box-sizing:ほとんどの人が変える設定
既定では、width と height はコンテンツ領域の大きさだけを決め、パディングと枠線はその外に足されます。これが content-box モデルで、レイアウトがやりにくくなります。たとえば width: 50% のボックス二つにパディングを少しでもつけると、もう横に並びません。box-sizing: border-box にすると、幅にパディングと枠線がふくまれ、そのぶんコンテンツ領域が縮みます。多くのスタイルシートは、最初に *, *::before, *::after { box-sizing: border-box; } でこれをすべての要素に適用しています。
ブロックボックスとインラインボックス
ボックスのふるまいは display の値によって変わります。p、h1、section などのブロックボックスは、新しい行から始まり、入れ物の幅いっぱいに広がります。a、strong、span などのインラインボックスは、文字の行の中におさまります。width や height は効かず、上下のパディングやマージンもほかの行を押しのけません。display: inline-block はその中間です。ボックスは単語のように行の中に並びますが、幅、高さ、パディングは守られるので、小さなラベルやボタンに向いています。
相殺されるマージン
ほとんどの人が驚くルールが一つあります。あるブロックの下マージンが次のブロックの上マージンと接すると、二つは足し算されず、大きいほうが勝ちます。margin-bottom: 20px の段落のあとに margin-top: 30px の見出しが続くと、あいだは 50 ではなく 30 ピクセルになります。これをマージンの相殺といいます。通常フローのブロックどうしの上下のマージンだけで起こり、フレックスやグリッドの入れ物の中では起こりません。ブロックを横方向の中央に置くには、width か max-width を指定し、margin: 0 auto とします。左右の自動マージン二つが、あいている場所を等しく分け合います。
outline: none でアウトラインを消すなら、別のわかりやすいフォーカスのスタイルに置きかえましょう。| コンテンツボックス | 文字や画像が入るところ |
| パディング(padding) | 枠線の内側の余白。背景が見える |
| 枠線(border) | パディングのまわりの線。スタイルが必要 |
| マージン(margin) | 枠線の外側の透明な余白 |
| box-sizing: border-box | 幅にパディングと枠線がふくまれる |
| マージンの相殺 | 接する上下のマージンは大きいほうが勝つ |
| inline-block | 行の中に並ぶが、幅とパディングは守られる |
- 層を内側から外側の順に並べましょう。
- content-box:width 300px、padding 20px、border 5px。全体の幅は?
- border-box:width 300px、padding 20px、border 5px。コンテンツ領域の幅は?
margin: 10px 20pxは何を指定しますか?- 上下が 10、左右が 20
- 左右が 10、上下が 20
- 上が 10、下が 20
padding: 1px 2px 3px 4px:左はいくつですか?- 20px の margin-bottom と 30px の margin-top が接しています。あいだはどれだけですか?
border: 2px #333で何も描かれないのはなぜですか?- solid のような枠線のスタイルがないから
- 色が濃すぎるから
- 枠線にはマージンが必要だから
- span が行の中にとどまったまま、幅と上下のパディングをもてるようになる display の値はどれですか?
- inline-block
- inline
- none
- 幅 600px のブロックを横方向の中央に置くにはどうしますか?
- margin: 0 auto
- padding: auto
- text-align: center on the block
- ボックスのどの部分に背景色が表示されますか?
- コンテンツとパディング(と枠線の下)
- コンテンツだけ
- マージンも
- コンテンツ、パディング、枠線、マージン。
- content-box は幅にパディングと枠線を足し、border-box は幅にふくめる。
- 一括指定は上から時計回り。接する上下のマージンは相殺される。
このコースの出典 (6)
- W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
- MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
- W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
- W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
- 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
- every code exercise checked with a Playwright probe against a reference solution.
確認日: 2026-10-17