CSSのflexとは?Web画面必須なflexの基本的な使い方を詳しく解説!

【 2025/04/17 18:34 更新 】
目次

    CSSのflexとは?

    flexとは要素を列や行に並べて表示ができる要素の種類です。
    flexをマスターするとWebページにおいてデザインの幅が一気に広がります。

    flexボックスのイメージ

    CSSのflexでできること

    • ブロック要素横並びにできる。
    • 配置を指定できる。
    • 並び順を指定できる。
    • 間隔や幅を細かく指定できる。
    こじはな
    こじはなもWeb開発のときはflex重宝してる!

    flexのコードはこんな感じ

    CSSでdsplay: flex;と指定します。

    【 test.css 】
    【 HTMLファイル 】

    ブラウザで実行するとこんな感じ

    flexボックスのHTMLブラウザ表示

    flex要素内のブロック要素が横並びになりましたね!

    この記事の前提知識

    こじはな
    前提としてHTML・CSSの基本知識がないと、理解が難しいかも!
    基礎知識がない方は以下の記事を読んでみてね〜!

    横並びの配置:justify-content

    justify-contentは、flex要素内の横並びの配置を設定できます。
    中央(center)・左(flex-start)・右(flex-end)などの値を設定します。
    ※後述する"flex-direction"の値によっては縦並びの配置になります。

    厳密に言うと横並びの配置ではない

    justify-contentは主軸の配置を設定するプロパティです。
    デフォルトでは主軸が水平となっているため横並びの配置設定となります。
    後述する"flex-direction"の値が"column"/"column-revers"の場合縦並びの配置設定となります。

    注意

    後述する"flex-direction"の値が"column"/"column-revers"の場合は縦並びの配置になります。

    【 test.css 】
    【 HTMLファイル 】

    ブラウザで実行すると値によって様々な配置となりました!

    flexボックスjustify-contentの値の結果をHTMLブラウザ表示

    justify-contentの値についての説明

    center

    flex要素内のアイテムを中央へ寄せます。

    flexボックスjustify-content:flex-centerのイメージ
    flex-start

    flex要素内のアイテムをへ寄せます。
    デフォルトの設定です。

    flexボックスjustify-content:flex-startのイメージ
    flex-end

    flex要素内の要素をへ寄せます。

    flexボックスjustify-content:flex-endのイメージ
    space-between

    flex要素内のアイテムを等間隔に配置します。
    行の1番目と最後の要素は、一番端に配置されます。

    flexボックスjustify-content:justify-betweenのイメージ
    space-evenly

    flex要素内のアイテムを等間隔に配置します。
    行の1番目と最後の要素は、端からスペースを空けて配置されます。
    端・要素間の余白は均等なサイズです。

    flexボックスjustify-content:space-evenlyのイメージ
    space-around

    flex要素内のアイテムを等間隔に配置します。
    行の1番目と最後の要素は、端からスペースを空けて配置されます。
    要素間の余白は両端の余白の2倍のサイズです。

    flexボックスjustify-content:space-aroundのイメージ
    flexにおけるアイテムとは

    flex要素内子要素のこと。

    縦並びの配置:align-items

    flex要素内の縦並びの配置を設定できるプロパティです。
    中央(center)・上(flex-start)・下(flex-end)などいくつか値があり、flex要素自体に指定します。

    厳密に言うと縦並びの配置ではない

    justify-contentは主軸との交差軸の配置を設定するプロパティです。
    デフォルトでは交差軸が垂直となっているため縦並びの配置設定となります。
    後述する"flex-direction"の値が"column"/"column-revers"の場合横並びの配置設定となります。

    注意

    後述する"flex-direction"の値が"column"/"column-revers"の場合は横並びの配置になります。

    【 test.css 】
    【 HTMLファイル 】

    ブラウザで実行すると値によって様々な配置となりました!

    flexボックスalign-itemsの値の結果をHTMLブラウザ表示

    align-itemsの値についての説明

    stretch

    flex要素内のアイテムで1番大きな要素の高さに揃います。
    デフォルトで設定されます。
    flex要素に高さ設定があり、アイテムに高さ設定がない場合に反映されます。

    flexボックスalign-items:items-stretchのイメージ
    center

    flex要素内のアイテムを垂直の中央へ揃えます。

    flexボックスalign-items:items-centerのイメージ
    flex-start

    flex要素内のアイテムを垂直の上へ揃えます。

    flexボックスalign-items:flex-startのイメージ
    flex-end

    flex要素内のアイテムを垂直の下へ揃えます。

    flexボックスalign-items:flex-endのイメージ
    flexにおけるアイテムとは

    flex要素内子要素のこと。

    折り返し:flex-wrap

    flex要素内のアイテムがflex要素の幅をはみ出すとき、アイテムを折り返す設定ができます。
    折り返す(wrap)・折り返さない(no-wrap)などを設定でき、flex要素自体に指定します。

    flexにおけるアイテムとは

    flex要素内子要素のこと。

    【 test.css 】
    【 HTMLファイル 】

    ブラウザで実行するとこんな感じ

    flexボックスflex-wrapの値の結果をHTMLブラウザ表示

    flex-wrapの値についての説明

    wrap

    flex要素内のアイテムがflex要素の幅をはみ出すとき、アイテムを折り返す設定です。

    no-wrap

    flex要素内のアイテムがflex要素の幅をはみ出してもアイテムを折り返さない設定です。
    デフォルトで設定されます。

    間隔:gap(column-gap/row-gap)

    flex要素内のアイテム同士の間隔まとめて設定ができます。
    flex要素自体に指定します。

    flexボックスgapのイメージ
    ポイント

    アイテム1つ1つにmarginをつけるより、gapでまとめて指定した方がプログラムの管理に適しています。

    gapは「display:grid」にも使える?

    gapはflex要素だけでなくgrid要素にも使えます
    gridとは、行・列形式のレイアウトを作成できる要素の種類です。

    【 test.css 】
    【 HTMLファイル 】

    ブラウザで実行するとこんな感じ

    flexボックスgapの値の結果をHTMLブラウザ表示

    gapの使い方についての説明

    flexボックスgapのイメージ
    gap: 値;

    flex要素内のアイテム同士の縦横の間隔を一括で指定できます。

    gap: 値1 値2;

    flex要素内のアイテム同士の間隔を、縦を値1横を値2で指定できます。

    column-gap: 値;

    flex要素内のアイテム同士の縦のみの間隔を一括で指定できます。

    row-gap: 値;

    flex要素内のアイテム同士の横のみの間隔を一括で指定できます。

    こじはな
    ここからはflexの応用編だよ!
    flexの基本について抑えている前提で説明するね!

    並び順/並び方:flex-direction

    flex要素内のアイテムの並び順や方向を設定できるプロパティです。
    左から右(row)・右から左(row-reverse)・上から下(column)・下から上(column-reverse)などがあり、
    flex要素自体に指定します。

    注意

    flex-directioncolumn/column-reverseに設定した際、
    justify-contentが垂直align-itemsが水平への設定プロパティに変化します。

    flexにおけるアイテムとは

    flex要素内子要素のこと。

    【 test.css 】
    【 HTMLファイル 】

    ブラウザで実行するとこんな感じ

    flexボックスflex-directionの値の結果をHTMLブラウザ表示

    flex-directionの値についての説明

    row

    flex要素内のアイテムを左から右の方向へ並ばせます。
    デフォルトで設定されます。

    flexボックスflex-direction:row;のイメージ
    row-reverse

    flex要素内のアイテムを右から左の方向へ並ばせます。

    flexボックスflex-direction:row-reverse;のイメージ
    column

    flex要素内のアイテムを垂直に上から下の方向へ並ばせます。
    justify-contentが垂直align-itemsが水平への設定プロパティに変化します。

    flexボックスflex-direction:column;のイメージ
    column-reverse

    flex要素内のアイテムを垂直に下から上の方向へ並ばせます。
    justify-contentが垂直align-itemsが水平への設定プロパティに変化します。

    flexボックスflex-direction:column-reverse;のイメージ

    アイテム幅の基準:flex-basis

    flex要素内のアイテムに対して基準の幅を定義します。
    アイテムに対する主軸方向ほぼ幅のようなイメージで、後述するflex-grow・flex-shrink基準となる幅です。
    flex要素内のアイテムに指定します。

    flexボックスのflex-basisイメージ
    flexにおける主軸とは

    主軸はflex要素内のアイテムを並べる基準の方向です。
    flex-directionに設定された値で、デフォルトでは主軸は水平となります。
    "flex-direction"が"column"/"column-revers"の場合、主軸は垂直となります。

    ほぼ幅の意味

    後述するflex-grow・flex-shrinkの指定・他アイテムの状態によって変わってくるからです。
    本当の幅というよりは、基準初期の幅と考えてください。

    【 test.css 】
    【 HTMLファイル 】

    ブラウザで実行するとこんな感じ

    flexボックスのアイテムに対するflex-basisの値の結果をHTMLブラウザ表示

    flex-basisの値について説明

    flex-basisはwidthやheightと同じような値を指定できます。

    flexボックスのflex-basisイメージ
    flex-basis: (size);

    flex要素内のアイテムに対して指定サイズに応じた基準の幅が指定されます。

    flex-basis: auto;

    flex要素内のアイテムに対してブラウザーが計算して決めた基準の幅が指定されます。
    デフォルトで設定されます。

    flex-basis: content;

    flex要素内のアイテムをアイテムの中身を基に、自動的に幅が設定されます。

    flex-basis: fit-content;

    flex要素内のアイテムに対してアイテムの中身の幅に合わせた幅が基準となります。

    アイテム幅の増分:flex-grow

    flex要素内のアイテムに対して主軸の幅の増分を指定できます。
    0以上の値を設定でき、最大は他アイテムの余裕+残りの余白があるだけ拡大することができます。
    flex要素内のアイテムに指定します。また、基準はflex-basisの設定値です。

    flexボックスのflex-growイメージ
    flexにおける主軸とは

    主軸はflex要素内のアイテムを並べる基準の方向です。
    flex-directionに設定された値で、デフォルトでは主軸は水平となります。
    "flex-direction"が"column"/"column-revers"の場合、主軸は垂直となります。

    【 test.css 】
    【 HTMLファイル 】

    ブラウザで実行するとこんな感じ

    flexボックスのアイテムに対するflex-growの値の結果をHTMLブラウザ表示
    ポイント

    flex-growの表示結果他アイテムの設定にも影響されます。

    アイテム幅の縮小分:flex-shrink

    flex要素内のアイテムに対して主軸の幅の縮小量を指定できます。
    0以上の値を設定でき、0アイテム自信を全く縮小しない設定となります。
    縮小する最大はアイテム自身の余裕があるだけです。また、基準はflex-basisの設定値です。
    flex要素内のアイテムに指定します。

    flexボックスのflex-shrinkイメージ
    ポイント

    flex-shrinkの設定値は、親要素がアイテム合計の幅より小さい時に効果を発揮します。

    flex-shrinkの0と1の違い
    • 0    :アイテム自信を全く縮小しない設定で、親要素をはみ出す可能性があります。
    • 1(以上):アイテム自信を縮小する設定で、親要素の中に収めます
    flexにおける主軸とは

    主軸はflex要素内のアイテムを並べる基準の方向です。
    flex-directionに設定された値で、デフォルトでは主軸は水平となります。
    "flex-direction"が"column"/"column-revers"の場合、主軸は垂直となります。

    【 test.css 】
    【 HTMLファイル 】

    ブラウザで実行するとこんな感じ

    flexボックスのアイテムに対するflex-shrinkの値の結果をHTMLブラウザ表示
    ポイント

    flex-shrinkの表示結果他アイテムの設定にも影響されます。

    flex-grow/flex-shrink/flex-basisの違い まとめ

    flex-basis

    flex要素内のアイテムに対して基準の幅を定義します。
    アイテムに対する主軸方向ほぼ幅のようなイメージで、flex-grow・flex-shrink基準となる幅です。

    flexボックスのflex-basisイメージ
    flex-grow

    flexアイテムに対して主軸の幅の増分を指定できます。
    0以上の値を設定でき、最大は他アイテムの余裕+残りの余白があるだけ拡大することができます。 flexボックスのflex-growイメージ

    flex-shrink

    flexアイテムに対して主軸の幅の縮小量を指定できます。
    0以上の値を設定でき、0アイテム自信を全く縮小しない設定となり、
    最大はそのアイテム自身の余裕があるだけ縮小することができます。

    flexボックスのflex-shrinkイメージ

    アイテム幅一括指定:flex

    flexアイテムのを指定できるflex-grow・flex-shrink・flex-basisまとめて指定できます。
    これらはflex要素内のアイテムに指定します。

    ポイント

    flexでflex-basisを指定しなかった場合、flex-basisのデフォルトは0%になります。
    flex-basisプロパティを直に指定した際はデフォルトがautoです。
    そのため、flexを使うか直指定かによって挙動が違う場合があります。

    【 test.css 】
    【 HTMLファイル 】

    ブラウザで実行するとこんな感じ

    flexボックスのアイテムに対するプロパティflexの結果をHTMLブラウザ表示
    ポイント

    プロパティflexの表示結果値の組み合わせ・他アイテムの設定に影響されます。

    flexプロパティの使い方

    flex: 値(0以上の数値);

    flex-growの指定となります。

    flex: 値(size);

    flex-basisの指定となります。

    flex: 値1(0以上の数値) 値2(0以上の数値);

    値1がflex-grow値2がflex-shrinkの指定となります。

    flex: 値1(0以上の数値) 値2(size);

    値1がflex-grow値2がflex-basisの指定となります。

    flex: 値1(0以上の数値) 値2(0以上の数値) 値3(size);

    値1がflex-grow値2がflex-shrink値3がflex-basisの指定となります。

    まとめ

    • CSSのflexは要素を列や行に並べて表示ができる要素の種類
    • CSSのflexはブロック要素も横並びにでき、配置や並び順・間隔・幅を設定できる。
    • justify-content:flex要素内の主軸(デフォルトは横)の配置を設定できる。
    • align-items:flex要素内の主軸との交差軸(デフォルトは縦)の配置を設定できる。
    • flex-wrap:flex要素内のアイテムがflex要素の幅をはみ出すとき、アイテムを折り返す設定ができる。
    • gap(column-gap/row-gap):flex要素内のアイテム同士の間隔まとめて設定ができる。
    • flex-direction:flex要素内のアイテムの並び順や方向を設定できる。
    • flex-basis:flex要素内のアイテムに対して基準の幅を設定できる。
    • flex-grow:flex要素内のアイテムに対して主軸の幅の増分を設定でき、flex-basisを基準とする。
    • flex-shrink:lex要素内のアイテムに対して主軸の幅の縮小量を指定でき、flex-basisを基準とする。
    • flex:flexアイテムのを指定できるflex-grow・flex-shrink・flex-basisまとめて指定できる。
    【 2025/04/17 18:34 更新 】