CSS辞書

flex (grow/shrink/basis)

レイアウト・配置

フレックスアイテムの伸縮性と基本サイズを制御するプロパティです。flex-grow(余白の配分比率)、flex-shrink(縮小比率)、flex-basis(基本サイズ)を組み合わせて、柔軟で予測可能なレイアウトを実現します。

構文

Syntax
flex: <flex-grow> <flex-shrink> <flex-basis>

Tailwindでは

flex-1flex: 1 1 0%
flex-autoflex: 1 1 auto
flex-noneflex: none
growflex-grow: 1
shrink-0flex-shrink: 0
basis-1/2flex-basis: 50%

「画像が潰れる」対策の flex-shrink: 0 は shrink-0。

コード例

1

.sidebar { flex: 0 0 250px; } .main { flex: 1; }
実行結果
Sidebar (固定)
Main (可変)

固定サイドバーと可変メインコンテンツ

2

.card { flex: 1 1 300px; }
実行結果
Card 1
Card 2
Card 3

最小300pxで均等に伸縮するカード

3

flex: none;
実行結果
固定要素
伸縮要素

伸縮しない(flex: 0 0 auto と同じ)

💡 TIPS

flex: 1は最も使用頻度が高い。レスポンシブデザインの基本。

🤖 AIがよく間違えるポイント

flex: 1はflex: 1 1 0%の省略で、basisが0になるため「コンテンツ量に関係なく均等分配」になります。一方flex-grow: 1だけ指定するとbasisはautoのままで「コンテンツ量に応じた分配」です。この違いはAIの説明でも頻繁に曖昧にされます。また「flexアイテムがつぶれる/はみ出す」問題の多くはflex-shrinkとmin-width: autoの相互作用で、flex-shrink: 0またはmin-width: 0が処方箋です。

💬 AIへの頼み方

flex: 1とflex-grow: 1の違いを、このレイアウトでの実際の挙動の差で説明して

flexで固定幅サイドバー+可変メインの定番レイアウトを、つぶれ防止(shrink: 0)込みで書いて

そのままAIチャットに貼り付けて使える依頼文の例です。ページ上部の「AI用にコピー」でこのページ全体をコンテキストとして渡せます。

関連プロパティ

このプロパティを使ったUIレシピ

ブラウザサポート

Baseline 広く利用可能
Chrome
29+
Firefox
20+
Safari
9+
Edge
12+