5-2-2_Flexbox 実務テクニック チートシート

Flexboxは、主に一方向(行または列)のレイアウトと、その中のアイテムの整列・順序・空間分配を扱うための強力なツールです。コンポーネントレベルのレイアウトに最適です。

1. Flexコンテナ(親要素)に適用する主要テクニック

Flexコンテナに適用することで、子要素(Flexアイテム)の基本的な振る舞いを決定します。

プロパティ役割と動作 (実務での使用例)
displayflex要素をFlexコンテナに変換します。これがなければ何も始まりません。
flex-directionrow (横) / column (縦)アイテムの並ぶ方向を定義します。ナビゲーションメニュー (row) やフォームのグループ化 (column) に必須。
justify-contentcenter, space-between, space-around主軸(Main Axis、flex-directionで定義された方向)に沿って、アイテム間の空間を分配します。ヘッダーのロゴとメニューを両端に寄せる (space-between) のに多用されます。
align-itemscenter, flex-start, flex-end, stretch交差軸(Cross Axis、主軸と垂直な方向)に沿って、アイテムを整列します。要素を垂直方向の中央に配置する (center) のに最も頻繁に使われます。
flex-wrapwrapコンテナの幅を超える場合に、アイテムを自動的に次の行へ折り返させます。レスポンシブなタグリストやカードのタイル表示には必須です。
gap1rem または 10px 20pxFlexアイテム間の**間隔(余白)**を定義します。marginの相殺を気にせず、シンプルに間隔を設定できます。Gridと同じく実務で非常に多用されます。

2. Flexアイテム(子要素)に適用する主要テクニック

個々のFlexアイテムに適用することで、コンテナ内の空間をどのように占有するか、どのように整列するかを制御します。

プロパティ役割と動作 (実務での使用例)
flex-grow1, 0 など増加の比率。利用可能な空き空間をどれだけ占有するかを定義します。1を設定すると、残りの空間をすべて均等に分け合います。メインコンテンツを拡張させるのに便利。
flex-shrink1, 0 など縮小の比率。アイテムの合計サイズがコンテナを超えた場合に、どれだけ縮小するかを定義します。特定のアイテムを絶対に縮小させたくない場合 (0) に使用します。
flex-basisauto, 200px, 25%アイテムが空間を占有する前の初期サイズを定義します。この値がflex-growflex-shrinkの計算の出発点になります。
flex1 1 auto (推奨デフォルト)flex-grow, flex-shrink, flex-basisショートハンドです。例えば、flex: 11 1 0% (空き空間を占有し、縮小もする) のショートハンドとして非常によく使われます。
order0, 1, -1 などHTMLのマークアップ順序に関係なく、Flexアイテムの視覚的な表示順序を定義します。モバイルでアイテムの順番を変える際に使用。
align-selfcenter, flex-start, flex-end親のalign-itemsの設定を上書きし、個々のアイテムを交差軸上で整列させます。特定のアイテムだけを上に寄せたい場合などに使います。

3. 実務で必須のテクニック:センタリング

Flexboxの最も強力で実用的な機能の一つは、水平・垂直方向の完璧なセンタリングです。

目的CSSコード (コンテナ)
垂直・水平方向の完璧なセンタリング