Flex Grow、Shrink、Basis
flexショートハンドを使って、flexアイテムの伸長、縮小、基準サイズを制御します。
「Flex Grow、Shrink、Basis」はCoddyKit上の無料CSS Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCSS Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CSS Academyコースには全4レッスンが含まれています。
flex の短縮記法
flex アイテムに指定する flex の短縮記法は、3つの値を設定します。flex-grow、flex-shrink、flex-basis です。
<div style="display:flex; gap:8px">
<div class="item">flex: 1 1 auto</div>
<div style="width:80px">Fixed 80px</div>
</div>
flex-basis
flex-basis は、アイテムが拡大または縮小される前の初期サイズを設定します。row 方向では width を上書きします。auto を指定すると、アイテムの幅またはコンテンツのサイズが使用されます。
<div style="display:flex; gap:8px">
<div class="sidebar">Sidebar (250px basis)</div>
<div class="main">Main (auto basis)</div>
</div>
flex-grow
flex-grow は、空きスペースがある場合に、兄弟要素と比較してアイテムがどれだけ拡大するかを決定します。値が 0 の場合は拡大しません。値が大きいほど、比例して多くのスペースを受け取ります。
<div style="display:flex; gap:8px">
<div class="main">Main (grow:2)</div>
<div class="aside">Aside (grow:1)</div>
<div class="fixed">Fixed (grow:0)</div>
</div>
flex-grow の例
コンテナに 300px の空きスペースがあり、2つのアイテムの flex-grow がそれぞれ 1 と 2 の場合、最初のアイテムには 100px、2番目のアイテムには 200px が追加されます(比率は 1:2 です)。
flex-shrink
flex-shrink は、スペースが不足したときにアイテムがどれだけ縮小するかを制御します。デフォルト値は 1 で、すべてのアイテムが均等に縮小します。0 を指定すると縮小しません。
<div style="display:flex; gap:8px">
<div class="logo">Logo</div>
<div class="search">Search input takes remaining space</div>
</div>
よく使う flex の短縮記法の値
次のよく使うパターンを覚えておきましょう。
flex: 1= 均等に拡大・縮小し、basis は 0%flex: auto= flex: 1 1 autoflex: none= flex: 0 0 auto(固定)flex: 0 0 200px= 200px 固定で、拡大・縮小しない
flex: 1 — 均等な分配
すべての子要素に flex: 1 を設定すると、利用可能なスペースが均等に分配されます。basis は 0% になるため、アイテムは何もない状態から拡大し、スペースを比例して分け合います。
<div class="equal-columns" style="display:flex; gap:8px">
<div class="col">Column A</div>
<div class="col">Column B</div>
<div class="col">Column C</div>
</div>
flex-basis と width
主軸方向では、flex-basis が width より優先されます。両方を設定した場合は flex-basis が優先されます(ただし flex-basis が auto の場合は width に委ねられます)。
内在的サイズと外在的サイズ
flex-basis: 0(flex: 1 など)では、アイテムは 0 から始まり、比例して拡大します。これは真の比例配分です。flex-basis: auto では、アイテムはコンテンツ本来のサイズから始まり、その後拡大します。
三列レイアウトの定番パターン
固定されたサイドバー、柔軟なメイン領域、固定されたサイドバーで構成される、典型的なレイアウトです。
<div class="layout">
<div class="left-sidebar">Left</div>
<div class="main-content">Main</div>
<div class="right-sidebar">Right</div>
</div>
flex における min-width と max-width
min-width と max-width を flex-grow と組み合わせて使用すると、拡大の上限と下限を制御できます。
<div style="display:flex; gap:8px">
<div class="card">Responsive Card</div>
</div>
確認問題
あるアイテムに flex: 0 0 200px が指定されています。これは何を意味しますか。
まとめ
flex-grow は余ったスペースを比例して分配します。flex-shrink はアイテムの縮小方法を制御します。flex-basis は開始時のサイズを設定します。短縮記法の flex: 1 は、スペースを均等に分配します。同じコンテナ内で、固定サイズのアイテムには flex: 0 0 Xpx を、柔軟なアイテムには flex: 1 を使用します。
AI チューターと学ぶ CSS — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 40
- レッスン
- 159
よくある質問
「Flex Grow、Shrink、Basis」レッスンは無料ですか?
はい。「Flex Grow、Shrink、Basis」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CSS Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CSS Academyコースには全4レッスンが含まれています。
「Flex Grow、Shrink、Basis」で何を学びますか?
flexショートハンドを使って、flexアイテムの伸長、縮小、基準サイズを制御します。 ブラウザで直接実行するハンズオンコードでCSS Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
CSS Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCSS Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Flex Grow、Shrink、Basis」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCSS Academyレッスンでコードを書いて実行できますか?
はい。すべてのCSS Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Display、Flex、Flex Direction
- Justify-ContentとAlign-Items
- Flex WrapとAlign-Content
- Flex Grow、Shrink、Basis