こんにちは!
先日、後輩というか、知り合いのデザイン事務所所属の若手Webデザイナーさんから、こんな質問を受けました。
「FlexboxとCSS Gridって、混在させても良いものですか?」
なるほど〜!
実はこれ、ジブンも以前、同じように悩んだ時期があったので、ちょっとほっこりした気持ちになりました!
FlexboxとCSS Gridが「混在」しても問題ないの?
この質問の背景には、大きく分けて次の2種類の疑問点、期待している回答が含まれているだろうと思います。
(2)プロジェクトや取り組んでいる案件、そしてチームのルールとしては大丈夫なのか?
(1)CSSの仕様としては混在OKです
FlexboxもCSS Gridも、どちらもW3Cの公式仕様として策定されているレイアウトシステムです。
現在の規格「CSS3」では、どちらもバリバリの現役です。
ですから、「どちらか一方のみを利用する」「両方を混在させる」のいずれを選択しても、「正解/不正解」ということはありません。
心配であれば、W3Cによる「バリデーションチェック」で試すこともできますよ!
(2)プロジェクトや案件、チームのルールはしっかり確認を!
ただし、参加しているプロジェクトや案件、チームによっては「レイアウトはFlexboxもしくは、CSS Gridだけに統一」などのポリシーを持っている場合があります。
そうしたプロジェクトや案件、チームなどの独自ルールがある場合、必ず「ドキュメント」と呼ばれるマニュアルが存在しているはずです。
あなたをはじめとした関係者へのアナウンス、メールもしくはSlackやChatworkなどといったメッセージングツールなどで、「コーディングガイドライン」「マニュアル」などの案内が届いていませんか?
まずは、そうしたドキュメントに当たってみましょう!
それでも「わからないポイント」などが残るようでしたら、遠慮なく(臆せず)プロマネや直接の担当者に問い合わせましょう。
最もマズイ対処法(最悪の選択)は、勝手な(独自)解釈です!
FlexboxとCSS Gridはどう使い分ければいいの?
FlexboxとCSS Gridが「混在」しても問題ない? という質問には、さらにはもう一つの疑問点が隠れているかもしれませんね!
それは、「どのような場面でFlexboxとCSS Gridを使い分けるべき?」という疑問かも!
だとしたら、具体的にはどんな場面でFlexboxとCSS Gridを使い分けると良いのでしょうか?
ここを腹落ちさせて自分の知識とするためには、FlexboxとCSS Gridそれぞれの「特徴」を理解しておくことが早道だと思います!
Flexboxが得意なこと
- 一方向(横or縦)の要素(アイテム)の整列
- アイテム間の間隔調整
- ナビゲーションやボタン配置などのパーツ単位のレイアウト
CSS Gridが得意なこと
- 2次元(行×列)の複雑なレイアウト
- カードレイアウト、雑誌風レイアウトなど
- 大枠のコンテンツ構造設置やレスポンシブ調整
つまり、表現したいレイアウトやデザインの実現に向け、FlexboxまたはCSS Gridの得意分野(特性)を活かした使い分けを行うことがポイントです。
こうした「使い分け」によってコードをスッキリ記述でき、その結果、メンテナンスや修正などの管理がしやすくなるのです。
メンテナンスや修正のしやすさという意味では、「レイアウトやデザインの意図を理解しやすいCSS」ということも重要ですね!
CSSフレームワークを使う場合には注意が必要
上手に使い分ければOKが基本とはいえ、次のようなケースでは【注意が必要】です。
例えば、BootstrapやTailwind CSSなどのCSSフレームワークを利用することが前提の場合は注意が必要です。Wordpressのテーマも同様ですね!
- 既存のユーティリティクラス(基本レイアウト、パーツ)やグリッドシステム(レイアウト構造)と競合しないか?
- フレームワークの思想に沿った使い方になっているか?
ポイントとしては、無駄なCSSコーディングやレイアウト崩れを防ぐために、ドキュメントやマニュアルなどを確認しよう!という点に尽きます!
コードレビューやAIを活用してみよう
それでも自信を持てないときや、「混在させていいのかな?」と迷ったときは、先輩やチームメンバーにコードレビューをお願いしてみてはいかがでしょうか?
もしくは、身近に先輩などが居ないフリーランスなどであれば、AI(ChatGPTなど)さんに「お願い」してみては?
今や「けっこういい感じ」というか、コードを貼るだけで「かなり正確(精確)に評価」してもらえますので!