ブログ

どっちを使う?Grid とFlex

2022.12.05 : Yamamoto Naoki
Coding

「grid」「flex」の両方が使えるようになって、CSSコーディングが便利になりました。
しかし、使い所の判断って難しい気がしますよね。
最近まで、「flex」一択でしたが、「grid」が加わり記述方法に戸惑いましたが最近は「grid」にも慣れてきましたので、現在個人的な意見として「grid」「flex」の使い所を書いてみようと思います。
※まだ経験値を継いでいる段階なので、今後変わる場合があります。

grid

文字通り、レイアウトが格子状になるものに向いています。

1.全体のレイアウト

全体的なレイアウトに使用します。
コンテンツが少ない場合、フッターを下部に設置する記述が便利ですね。

2.上下左右センター

Flexでも可能ですが、以下の2行でいけるので、ソースが若干短くなっていいですね。

display: grid;
place-items: center;

3.等幅の繰り返し

カード的な表示とか、以下の表示でできるので便利です。

display: grid;
grid-template-columns: repeat(auto-fill, minmax(265px, 1fr));

Flex

「grid」でも、できることが多いのですが、一応格子状以外のものにしています。

1.グローバルメニュー

大体が1列に並んでいるので「flex」でいいのではと思います。

2.左右に分かれる単純なボックス

左に画像、右にテキストなどで、以下の記述すると簡単に左右が入れ替わります。

display: flex;
flex-direction: row-reverse;

共通

「grid」「flex」で「gap」があります。
これが一番便利ではないか思います。
「gap」がないときは、ネガティブマージンを使っていました。「gap」の登場で「grid」「flex」の子要素の間隔が「gap」一つで可能になり、コードもスッキリしたと思います。

最後に

なんだかんだ言って、「grid」が便利だということ。
「grid」であれあば、子要素の大きさも、「grid」内に記述できるため、コード的にもメンテナンス性的にも、スッキリしていい感じです。

難点を言えば、複雑なレイアウトを「grid」でやろうとすると、頭だけでは難しく、紙に書かないと混乱してしまうことでしょうか?これも慣れだと思うのですが・・・。

最後の最後に、display: float;  もたまに使いますよ。

アーカイブ

資料ダウンロード 制作依頼・ご相談
イメージ:制作依頼・ご相談
イメージ:制作依頼・ご相談