CSS Academy · レッスン

Flex Grow、Shrink、Basis

flexショートハンドを使って、flexアイテムの伸長、縮小、基準サイズを制御します。

レッスン 4/413 ステップ

「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 auto
  • flex: 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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Display、Flex、Flex Direction
  2. Justify-ContentとAlign-Items
  3. Flex WrapとAlign-Content
  4. Flex Grow、Shrink、Basis
← CSS Academyに戻る