Flexboxのgapがモダンブラウザでサポート

この記事について

この記事は、スマートフォン時代のWebデザインスクールWeb制作の基礎から学べる「Webコーディングスクール」 の資料制作をお手伝いして頂いているemiさんによる寄稿記事です。

emiと申します。USAGI DESIGN emi.というサイトでWebデザインやコーディング練習用のデザインデータを配布しています。普段はWebデザインやコーディング、メンターなどをしております。

Flexboxとは

Flexbox(Flexible Box Layout Module)はフレキシブルボックスレイアウトモジュールという名前の通り、ボックスのレイアウトを簡単に実現できるものです。

Flexboxを使用すると、今までFloatで処理してきた横並びレイアウトはもちろん、親要素と子要素のプロパティを組み合わせてボックスとボックスの余白を調整することもできます。

gapがモダンブラウザでサポートされました

FlexboxのgapがSafari 14.1からサポート開始となりました。
これで、モダンブラウザではひととおりサポートされたことになります。

詳細記事(英文): New WebKit Features in Safari 14.1 | WebKit

Webコーディングスクール 体験レッスン受付中

gapとは

gapはflexアイテム間の余白部分に適用されます。

今まではgapはSafariで対応していなかったこともあり、Flexboxレイアウトでのflexアイテム同士の余白はmarginやpaddingを使用していましたが、gapがSafariでも対応されたことで利用しやすくなり、flexアイテム間の調整がわかりやすく簡単になりました。

以下のコードでは、.gap-sample1{} 内で gap:20px; と指定しています。

gapの使用例

このように親要素で指定したgapの値はflexアイテムのliとliの間に適用されます。

gapの指定方法

gapでは行(column-gap)と列(row-gap)をまとめて記述しています。
以下は行と列の間隔をそれぞれ指定した場合です。

以下のコードでは、.gap-sample2{} 内で gap:10px 20px; と指定しています。

gapではなくmarginを使用した場合

gapを使用せずにmarginを用いてもflexアイテムの間隔を調整できますが、marginを使用した場合は以下のようになります。

以下のコードでは、.flex-margin li{} 内で margin:10px 20px; と指定しています。

このようにgapの時と同じ10px 20pxとした場合1つのflexアイテムにそれぞれ上下に10pxずつ、左右に20pxずつ追加されてしまいます。

そのため、上記を同じ間隔のレイアウトを実現するためには以下のように記述する必要があります。

以下のコードでは .flex-margin li:nth-child(-n+3){} 内と .flex-margin li:nth-child(n+4){} 内でmarginを指定しています。

このようにmarginを使用した場合は1行めに表示されている3つ目のliまでは上に余白5pxができないように、2行めに表示されている4つ目から6つ目までのliの下に5pxの余白ができないように記述しています。

上記のように指定するとデバイスによっては2列で表示、3列で表示とそれぞれli要素への指定が増えていくため、CSSが煩雑になってしまいます。

煩雑になると調整するための記述も増えて、修正漏れや記述漏れの原因となります。

まとめ

gapがモダンブラウザでサポートされたことにより、今までmarginで対応していたことにより煩雑なCSSとなっていた箇所も、すっきりとしたわかりやすい記述で実装できますね。

最近の記事

Web制作関連動画

メルマガ会員向けの「コーダーにも役立つ補完AI『Codeium』の使い方」の動画を期間限定で公開しています。
CodeiumはGitHub Copilotと似ていますが、CSSなども補完できて、今登録すれば無料で使えます。

メルマガでは、Web制作者のためのAI活用やWordPress関連の動画など、さまざまな特典があります。ご興味ある方は、ぜひメルマガにご登録ください。
Index