解剖図
ANATOMY外側から margin → border → padding → content。各層にマウスを乗せると輪郭が強調されます。デザイナーの言葉に置き換えると、marginは「隣との距離」、paddingは「中身のゆとり」です。
margin → border → padding → content
カードの内側の余白(padding)を24px、カード同士の距離(margin)を16pxにして。境界線(border)は1pxの薄いグレーで
インタラクティブ・プレイグラウンド
PLAYGROUNDwidth: 200px を指定した同じ箱を、box-sizing の設定違いで並べています。スライダーで padding と border を増やすと、content-box は箱が膨らみ、border-box は200pxのまま中身が縮むのがわかります。レイアウトが崩れない border-box が現代の標準です。
黄=margin/青=border/緑=padding。市松模様は親要素の領域です。
content-box(初期値)
border-box(推奨)
box-sizing: border-box をグローバル(*, *::before, *::after)に設定して。サイズ計算が狂わないように最初に必ず入れて
パディングの目盛り
PADDING SCALE同じボタンでもpaddingで印象が一変します。「窮屈」と感じたらpaddingを増やす。上下左右を個別指定するときは 時計回り(上→右→下→左) の順です。
padding: 4px 8px
お問い合わせ窮屈文字が枠に近すぎて息苦しい
padding: 12px 24px
お問い合わせ標準ボタンの基準値。迷ったらこれ
padding: 20px 44px
お問い合わせゆったりヒーローの主役CTA向け
ボタンのpaddingを上下12px・左右24pxにして。ヒーローの主役CTAだけ上下16px・左右40pxで一回り大きく
マージンの距離感
MARGINmarginは要素どうしの心理的な距離。近いほど「関係が深い」、遠いほど「別の話」に見えます(近接の原理)。左右をautoにするとブラウザが余白を等分し、中央揃えになります。
margin: 0
くっついて一体化して見える
margin-bottom: 8px
同じグループ内の間隔
margin-bottom: 32px
別のまとまりとして分離
左右のmarginをautoにすると自動で中央揃え
関連する要素どうしは8〜16px、セクションの区切りは80pxのmarginにして、近接のメリハリを付けて。コンテナはmargin: 0 autoで中央に
gap と margin の使い分け
GAP vs MARGIN並べる要素の間隔はgap、単体の要素の距離はmargin。marginで並べると最後の要素の外側に余白が余りますが、gapは要素の「間」だけに効きます。
gap: 14px ◎
間だけに均等な余白。両端はきれい
margin-right: 14px ✗
最後の外側にも余白が付いてズレる
横並び・グリッドの間隔はすべてgapで統一して。行と列で変えるときはrow-gap 32px / column-gap 20pxで
スペーシングスケール
SPACING SCALE — 一流の基礎一流のサイトは余白を場当たりで決めません。4pxまたは8pxの倍数の段階(スケール)だけを使うと、ページ全体に統一されたリズムが生まれます。「13pxと15pxの余白が混在」のような迷いがなくなるのが最大の効果です。
余白は4/8/16/24/40/64/96pxのスケールに統一して。中途半端な値(13px・30pxなど)は最も近い段階に寄せて
表示モード
DISPLAY要素の並び方の性質。blockは幅いっぱいに広がり縦に積まれる、inlineは文中に流れる、inline-blockは文中に並びつつサイズ指定が効く中間形。横並び・格子はflex/gridの出番です。
display: block — 横幅100%、縦に積まれる
display: inline / inline-block — 文中に並ぶ
文章の中にinlineは流れるように並び、inline-blockはサイズやpaddingがきちんと効きます。
このリンクをinline-blockにしてpaddingでタップ領域を44px四方以上確保して。並びは崩さずに
はみ出しの作法
OVERFLOW中身が枠を超えたときの振る舞い。hiddenは潔く切る、autoはスクロールで読ませる、visibleはそのまま溢れる(崩れの原因)。横長のテーブルはoverflow-x: autoで横スクロールが定石です。
hidden
auto
visible
テーブルが画面幅を超えたらoverflow-x: autoで横スクロールにして。スクロールできることが分かるよう右端をふわっとフェードさせて