ボックスモデル

CSSで物を配置し始めると、誰もが同じパズルに直面します。幅を設定してパディングを追加すると、要素が頼んだより広くなります。2つの段落が数字が示すより近くに置かれます。これはバグではありません。これはボックスモデルであり、すべての要素がどれだけのスペースを占有するかを決定するルールのセットです。一度それを視覚化できれば、ほとんどの配置に関する驚きは驚きではなくなります。
すべての要素がボックスです
CSSはページ上のすべての要素を、単語やリンクであっても長方形として扱います。その長方形は内側から外側へスタックされた4つのレイヤーで構成されており、これが**ボックスモデル**です。中央のコンテンツ、その周りのパディング、ボーダー、そして外側のマージンです。
壁に掛かった枠付き写真を想像してください。写真がコンテンツです。写真の周りの白いマット板がパディングで、枠の内側の余白です。木製のフレームがボーダーです。このフレームと次のフレームの間の空いた壁がマージンです。スタイルするすべての要素は同じように、内側から外側へパッケージされています。
.card {
padding: 16px; /* 内側のスペース、コンテンツの周り */
border: 2px solid #333; /* フレーム */
margin: 24px; /* 外側のスペース、隣同士の要素を遠ざける */
}padding、border、margin
3つの配置レイヤーはそれぞれ1つの仕事をします。**パディング**はコンテンツとボーダーの間の内側のスペースです。マージンは外側のスペースで、他の要素を遠ざけます。ボーダーはそれらの間に引かれた線です。
4つの辺すべてに対して1つの値を設定するか、単一の辺をターゲットにできます。
.card {
padding: 20px; /* 4つの辺すべてが20px */
margin-bottom: 32px; /* 下の辺のみ */
}ショートハンドpadding: 20pxは、上、右、下、左をすべて一緒に言う簡単な方法です。残りと異なるサイドが必要な場合は、margin-bottomのような特定のプロパティに到達してください。
paddingを使用し、2つのボックスが近すぎる場合はmarginを使用してください。padding: 20pxのような1つの値は4つの辺をすべてカバーするか、margin-bottomのような辺を名付けると1つのみが変わる必要があります。 box-sizing: content-box vs border-box
ほぼすべての人を捕まえる驚きです。カードをwidth: 300pxに設定してパディングを追加すると、カードはページで300ピクセルより広くなります。あなたは何も間違っていません。デフォルトでは、widthは中央のコンテンツのみを測定し、パディングとボーダーは上に追加されます。
幅を期待した方法で振る舞わせる1行の修正があります。box-sizing: border-boxを設定すれば、今入力する幅はボックスの完全な幅です。パディングとボーダーが含まれています。
.card {
box-sizing: border-box; /* 幅がパディングとボーダーを含む */
width: 300px;
padding: 20px; /* カードは300pxのままで、340pxではない */
}widthは中央のコンテンツのみを測定するため、パディングとボーダーはボックスを入力した数より大きくします。box-sizing: border-boxを設定すればそれを修正します。幅は完全なボックス、パディングとボーダーが含まれます。これは長い間私を悩ませたので、早めに覚えておく価値があります。 マージン折りたたみ
もう1つの驚き。マージンをスタックすることについてです。2つの段落を上に置いて、最初に24px下マージンを与え、2番目に16px上マージンを与えると、それらの間に40pxのギャップを期待するかもしれません。実際に24pxを取得します。
これは**マージン折りたたみ**と呼ばれます。2つの垂直マージンが出会うとき、ブラウザはそれらを一緒に追加しません。それは2つのうち大きい方を保持し、小さい方を捨てます。そのため、より大きいマージンが勝ち、ギャップは24pxで、40pxではありません。上下のマージンのみで発生し、パディングとは決してありません。
.intro {
margin-bottom: 24px;
}
.details {
margin-top: 16px;
/* それらの間のギャップは24px、より大きいマージン、40pxではない */
}24pxが上に16pxをに出会って24pxギャップを与え、40pxではありません。上下のマージンのみで発生し、最初は誰もが驚きます。 
