CSS

margin

初級

読み方:マージン|英語:Margin

要素の外側の余白で、隣の要素との距離を調整するよ。

やさしい説明

margin(マージン)とは、要素の外側の余白です。隣の要素との距離を指定します。

教室の机に例えると、marginは「机と机の間のスペース」です。机の中身(padding)ではなく、机の外側の空間です。

上下左右を個別に指定できます。また margin: 0 auto; で要素を左右中央に配置できる便利な使い方もあります。

具体例・使い方

/* 上下左右すべて16px */
margin: 16px;

/* 上下10px、左右20px */
margin: 10px 20px;

/* 上8px、右16px、下24px、左16px(時計回り) */
margin: 8px 16px 24px 16px;

/* 個別に指定 */
margin-top: 32px;
margin-bottom: 32px;

/* 左右中央揃え(widthの指定が必要) */
.container {
  width: 800px;
  margin: 0 auto;
}

marginとpaddingの違い

  • margin — 外側の余白。要素と要素の間の距離。背景色は適用されない
  • padding — 内側の余白。内容と枠線の間の距離。背景色が適用される
.card {
  margin: 16px;    /* カードの外側のスペース(他要素との距離) */
  padding: 24px;   /* カード内側のゆとり(テキストと枠の間) */
  background: white; /* paddingの領域まで白になる、marginは透明のまま */
}

「ボタンをクリックしやすくしたい(タップ領域を広げたい)」場合は padding を増やします。marginを増やしても要素自体のサイズは変わらないからです。

margin: 0 auto で中央揃え

/* よく使うパターン: ページのコンテンツを中央に */
.container {
  max-width: 1200px;
  margin: 0 auto;  /* 上下0、左右auto(均等に余白が入り中央揃え) */
  padding: 0 16px; /* スマホでの左右の余白 */
}

いつ使う?

  • 段落の下に余白を空けて読みやすくしたいとき
  • カード・ボタンなど要素同士の間隔を作るとき
  • ページ全体のコンテンツを左右中央揃えにしたいとき(margin: 0 auto
  • 見出しと本文の間にスペースを作りたいとき

間違いやすいポイント

❌ 上下のmarginが重なる(マージンの相殺)

上下方向のmarginは「相殺」されて大きい方だけが適用されます。margin-bottom: 20pxmargin-top: 30px が隣り合うと間隔は50pxではなく30pxになります。

/* margin-bottom: 20px の要素 */
/* margin-top: 30px の要素 */
/* → 実際の間隔は 30px(大きい方が勝つ) */

/* 回避策: Flexboxコンテナ内はmargin相殺が起きない */
.flex-container { display: flex; flex-direction: column; gap: 16px; }

❌ margin: auto が効かない

margin: 0 auto で中央揃えするには、要素に width または max-width の指定が必要です。幅がないとautoが機能しません。

よくある疑問

Q: marginとpaddingの違いは?

A: marginは要素の「外側」、paddingは要素の「内側」の余白です。背景色はpaddingまで塗られますが、marginには塗られません。

Q: margin: auto で中央寄せするには?

A: ブロック要素にwidthを指定した上で margin: 0 auto; と書きます。widthがないと効かないので注意。Flexboxならjustify-content: center;の方が簡単です。

Q: marginに負の値を使える?

A: はい。margin: -10px; のように負の値を使うと要素が重なります。レイアウトの微調整に使いますが、多用すると管理が大変になります。

関連用語

📖 関連レッスン

レッスンを見る →

関連ブログ記事

⚠️ 関連するエラー

❓ 関連するQ&A