コーディング犬に聞く:「flexとgridはどう使い分ける?」

CSSを勉強していると必ず出てくるのが、

display: flex;

display: grid;

です。

初心者の頃は、

  • どっちもレイアウト用?
  • 結局どっちを使えばいいの?
  • flexだけで十分じゃない?
  • gridって難しそう…

と思う人が多いはずです。

今回は、

「flexとgridはどう使い分けるの?」

という疑問をコーディング犬に聞いてみました。

質問人

Q. flexとgridって何が違うの?

「一言で言うとこれ!」

  • flex → 1方向
  • grid → 2方向

です。

コーディング犬
質問人

Q. 1方向ってどういうこと?

例えば横並び。

<div class="wrap">
<div>A</div>
<div>B</div>
<div>C</div>
</div>
.wrap{
display:flex;
}

すると、

A B C

と横並びになります。


縦なら、

.wrap{
display:flex;
flex-direction:column;
}

で、

A
B
C

になります。

つまりflexは、

「横か縦」

のどちらかを管理するのが得意です。

コーディング犬
質問人

Q. gridは?

「表みたいなレイアウトです。」

例えば、

.wrap{
display:grid;
grid-template-columns: 1fr 1fr;
}

すると、

A B
C D

みたいに配置できます。

コーディング犬
質問人

Q. じゃあgridの方が強そう?

「実際かなり強いです。」

例えば、

商品一覧

みたいなレイアウト。

□ □ □
□ □ □
□ □ □

こういうのはgridが得意です。

コーディング犬
質問人

Q. flexでもできるよね?

「できます。」

例えば、

display:flex;
flex-wrap:wrap;

でも実現できます。

ただ、

列数を揃えたい時はgridの方が圧倒的に楽です。

コーディング犬
質問人

Q. flexが得意なものは?

「ナビゲーションです。」

例えば、

ホーム
サービス
会社概要
お問い合わせ

を横並びにしたい時。

display:flex;
justify-content:space-between;

だけで完成します。


他にも、

  • ボタン横並び
  • ヘッダー
  • SNSアイコン
  • ページャー

などはflexが便利です。

コーディング犬
質問人

Q. gridが得意なものは?

「カード一覧です。」

例えば、

商品
商品
商品

商品
商品
商品

こういうもの。


WordPressだと、

  • ブログ一覧
  • 制作実績一覧
  • スタッフ一覧
  • 商品一覧

はgridがかなり使いやすいです。

コーディング犬
質問人

Q. 実際の案件ではどう使う?

「両方使います。」

例えば、

カード一覧

.cards{
display:grid;
}

カードの中

.card{
display:flex;
}

こんな感じ。


つまり、

gridの中にflex

が普通にあります。

コーディング犬
質問人

Q. gridだけで全部できない?

「できるけど面倒です。」

例えば、

ロゴ      メニュー

なら、

flexの方が圧倒的に楽です。

コーディング犬
質問人

Q. 初心者はどっちから覚える?

「flexです。」

理由は単純。

使う頻度が高いから。


まず覚えるべきは、

display:flex;
justify-content:center;
align-items:center;

です。

これだけでかなりのレイアウトが作れます。


その後に、

display:grid;
grid-template-columns:

を学べば十分です。

コーディング犬
質問人

Q. Web制作会社ではどう?

「ほぼ両方使います。」

最近の案件だと、

  • ヘッダー → flex
  • カード一覧 → grid
  • CTAボタン → flex
  • フッター → grid

みたいな感じです。

コーディング犬
質問人

Q. 迷った時はどうする?

「1列ならflex、表ならgrid。」

これだけ覚えればOK。


例えば、

横並び

□ □ □ □

flex


商品一覧

□ □ □
□ □ □
□ □ □

grid


これが一番分かりやすい判断基準です。

コーディング犬

まとめ

flexとgridは、

どちらも現代のWeb制作で必須のCSSです。

違いを一言で言うと、

  • flex → 1方向のレイアウト
  • grid → 2方向のレイアウト

です。

初心者のうちは、

まずflexを覚えましょう。

そして、

商品一覧やブログ一覧を作るようになったらgridを学ぶ。

この順番が一番理解しやすいです。

Web制作の現場では、

「flexかgridか」

ではなく、

「flexもgridも使う」

が正解です。

コーディング犬との約束です。