Web制作やフロントエンドを学び始めたとき、多くの人が最初につまずくのが「margin と padding の違い」です。
自分では正しく指定しているつもりなのに、思った位置に余白ができなかったり、逆に変な隙間が空いたりして、「なんで?」と画面とにらめっこした経験がある人も多いはずです。
特にHTML/CSSを独学していると、「とりあえずmarginを足してみる」「paddingを入れたら直った気がする」と、感覚頼りになりがちです。
その状態のまま進んでしまうと、あとからレイアウト修正が地獄になったり、レスポンシブ対応で一気に崩れたりします。
この記事では、そんな「margin と padding がなんとなく分かっているけど、説明しろと言われると不安」という状態を卒業するために、
図解イメージ・具体例・実務目線で丁寧に解説していきます。
この記事を読み終わるころには、
「この余白は margin」「ここは padding」と迷わず判断できる状態になり、
CSSを書くスピードと修正耐性が確実に上がります。
この記事で分かること
-
margin と padding の本質的な違い
-
それぞれが「どこに効いている余白」なのか
-
実務での正しい使い分けルール
-
初心者がよくやる失敗とその回避策
-
レイアウトが崩れにくくなる考え方
結論(先に答えを書く)
margin は「要素の外側の余白」、padding は「要素の内側の余白」。
迷ったら「背景色が広がるかどうか」で判断する。
これだけ覚えておけば、8割は間違いません。
marginとpaddingとは?(前提・基礎知識)
marginとは何か
margin は 要素と要素の「外側の距離」 を調整するプロパティです。
簡単に言うと、
-
要素と他の要素の「間隔」を空けたいとき → margin
-
要素同士を離したいとき → margin
という役割を持っています。
margin は 要素の外側 に効くため、
背景色や枠線の外にスペースが生まれます。
paddingとは何か
padding は 要素の中身(コンテンツ)と枠線の間の余白 を調整するプロパティです。
-
テキストと枠線がくっついて見づらい
-
ボタンの中を広くしたい
-
背景色ごと余白を持たせたい
こういうときに使うのが padding です。
padding は 要素の内側 に効くため、
背景色や枠線も一緒に広がります。
図解イメージ(超重要)
文章だけだと分かりにくいので、まずはイメージで理解しましょう。
-
margin:箱の外にできる余白
-
padding:箱の中にできる余白
この違いをまず頭に入れてください。
marginとpaddingの具体的なやり方・手順
ステップ①:基本的な書き方を理解する
この指定をすると、
-
要素の外側に 20px の余白(margin)
-
要素の内側に 20px の余白(padding)
が同時に適用されます。
よくある誤解ですが、同じ 20px でも意味は全く違います。
ステップ②:背景色を付けて確認する
理解を一気に深めるコツは、背景色を付けることです。
この状態で見ると、
-
padding → 背景色が広がる
-
margin → 背景色の外に余白ができる
という違いが一目で分かります。
背景色が広がるかどうか
これが判断基準として非常に重要です。
ステップ③:実務での使い分けルール
実務では、以下のルールで考えると迷いません。
-
要素同士の距離を調整したい → margin
-
要素の中を見やすくしたい → padding
-
ボタンを押しやすくしたい → padding
-
セクション間の余白 → margin
「どこからどこまでを1つの塊として扱いたいか」を考えると、自然と選べるようになります。
よくある失敗・注意点
失敗①:全部marginで調整しようとする
初心者によくあるのが、
「余白が足りない → とりあえず margin を足す」
というパターンです。
結果として、
-
ボタンが小さいまま
-
テキストが枠に近くて読みにくい
という状態になります。
回避策
→ 中身の余白は padding を使う
失敗②:paddingで要素間を離そうとする
padding は内側なので、
要素同士を離す目的では向いていません。
無理に padding で調整すると、
-
レスポンシブで崩れる
-
クリック領域だけ変に広がる
といった問題が起きます。
回避策
→ 要素同士の距離は margin に任せる
失敗③:margin-top だけでレイアウトを組む
縦方向の余白をすべて margin-top で作ると、
意図しない「margin の相殺(マージンコラプス)」が起きることがあります。
回避策
-
セクション全体に padding を持たせる
-
子要素ではなく親要素で余白を管理する
これだけでトラブルは激減します。
実際にやってみた結果(体験・事例)
私自身、駆け出しの頃は
「余白=margin」だと思ってCSSを書いていました。
Before
-
ボタンが押しにくい
-
デザインとズレる
-
修正依頼が多い
After(使い分けを意識)
-
ボタン内は padding で調整
-
セクション間は margin
-
親要素で余白管理
結果として、
-
修正回数が体感で 半分以下
-
レスポンシブ修正が楽
-
デザイン再現性が向上
「余白の考え方」を変えただけで、
CSSの書き直しが激減しました。
こんな人におすすめ / 向いていない人
おすすめな人
-
HTML/CSSを学び始めたばかりの人
-
レイアウトが崩れて原因が分からない人
-
実務でCSSを書く機会がある人
向いていない人
-
すでに余白設計を完全に理解している人
-
CSS設計ルールが固まっているチームでしか作業しない人
よくある質問(FAQ)
margin と padding、どっちを使えばいいか毎回迷います
迷ったら 背景色が広がるかどうか で判断してください。
広げたいなら padding、離したいなら margin です。
ボタンの余白はどちらが正解ですか?
基本は padding です。
クリックしやすさ・見た目の両方にメリットがあります。
レスポンシブで崩れやすいのはなぜ?
margin と padding の役割を混ぜて使っているケースが多いです。
親=padding、子=margin の役割分担を意識すると安定します。
まとめ
-
margin は外側、padding は内側の余白
-
背景色が広がるかどうかが判断基準
-
実務では役割を分けて使うのが正解
まずは、今書いているCSSに背景色を付けて確認してみてください。
次は「section 全体の余白設計」を意識すると、
レイアウトが一段レベルアップします。


コメント