要素の余白を決定するmarginとpadding
CSSには要素の余白を表すプロパティとしてmarginとpaddingが用意されています。この二つのプロパティは、ボックス・モデルにおいて固有の範囲を持ち、専用の面積を作り出すことができます。
marginは要素の外側の余白を表し、paddingは要素の内側の余白を表します。これらの間には、境界線であるborderが挟まれています。この全てが、内容を配置するコンテンツ・ボックスを取り囲んでおり、寸法を広げると外側へ向かって拡大します。
本来、widthとheightは純粋に内容が配置されるコンテンツ・ボックスの寸法を表します。これを理解しないままレイアウトを行うと、想定したサイズに合わなかった要素が、親要素からはみ出したり崩れた状態で表示されます。
また、垂直方向の余白は状況に応じて折りたたまれることがあるため、指定したmarginが期待したように反映されないということが起こります。それを防ぐために、CSSの余白を正しく理解しておく必要があるのです。
内側の余白であるpaddingの正しい解釈
まずは、内側の余白を定義する「パディング」について見て行きましょう。paddingは、CSSのボックス・モデルを構成する区域のうち、パディング・ボックスの寸法を指定するプロパティです。
パディング・ボックスは、専有の面積を持つ固有の区域で、コンテンツ・ボックスとボーダー・ボックスの間に隣接しています。これはどういうことかと言うと、境界線の内側にあるため、ボックスの内側に属しているということです。例えば、凡庸な<div>要素で囲んだテキストを配置した場合、パディングは<div>の内部構造の一部です。
要素の内部に含まれている以上、paddingは外部環境の影響を受けません。例え内容が空の要素であっても、paddingを指定すれば折りたたまれずにそのまま表示されます。
以下の例は、要素のサイズ変更と余白の関係を可視化したものです。要素のwidthやheightの値を変更すると、ボックスの寸法が変化します。背景色はbackground-clipの機能を使ってコンテンツ・ボックスのみに適用しているため、余白の部分は親要素に指定されている青色を透過します。
