gap

FlexboxやGridの子要素の間に、隙間を空けるプロパティ。 負のマージンで外側の余白を打ち消していたハックを、1行の指定に置き換えられます。

今の書き方

隣接する子要素の間にだけ、隙間が入ります。 外側の端には入らないため、打ち消すための負のマージンもラッパーも要りません。 Gridでも同じように使えます。

.tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
<ul class="tags">
  <li>HTML</li>
  <li>CSS</li>
  <li>JavaScript</li>
</ul>

以前の書き方

子要素に半分ずつマージンを付け、外側に出た分を親の負のマージンで打ち消していました。 負のマージンがはみ出さないよう、overflow: hiddenのラッパーも必要です。

.tags-wrapper {
  overflow: hidden;
}

.tags {
  display: flex;
  flex-wrap: wrap;
  margin: -4px;
}

.tags > li {
  margin: 4px;
}
<div class="tags-wrapper">
  <ul class="tags">
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
  </ul>
</div>

置き換えるときの注意点

  • Gridでは2017年10月から全ブラウザで使えます(当時の名前はgrid-gap)。 Flexboxで使えるのは、Chrome 84・Firefox 63・Safari 14.1からです(2021年4月)。
  • 負のマージンをやめると、ラッパーのoverflow: hiddenも消せます。 端の子要素のフォーカスの枠や影が、切れずに表示されるようになります。
  • grid-gapはgapの古い名前で、今も別名として効きます。 見つけたらgapに書き換えて構いません。
  • gapは最小の隙間です。 justify-content: space-betweenや子要素のマージンがあると、隙間はさらに広がります。

Browser Support

  • Chrome

    v57+
    2017-03-09
  • Edge

    v16+
    2017-10-17
  • Safari

    v10.1+
    2017-03-27
  • Safari (iOS)

    v10.3+
    2017-03-27
  • Firefox

    v52+
    2017-03-07

機能名やコードで検索できます

例:aspect-ratio、:has()、padding-top

別の言葉や、プロパティ名で試してください

検索を読み込めませんでした