【基本編】CSSで横や縦の並びを指定できるフレックスボックス(flex)とは?使い方を詳しく解説!

【 2025/08/29 00:00 更新 】
目次

    CSSの フレックスボックス(flex)とは?

    CSSの フレックスボックス(flex)とは?

    フレックスボックス(flex)は、複数の要素を並べて表示させることができる要素です。

    要素を横や縦に並べることができ、要素同士の間隔や配置を指定できるプロパティが用意されています。

    〜 フレックスボックスのイメージ 〜

    flexボックスのイメージ
    こじはな
    こじはなもWeb開発のときはflex重宝してる!

    flexのコードはこんな感じ

    CSSでdsplay: flex;と指定すると、フレックスボックスになります。

    【 CSS 】
    【 HTML 】

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

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

    ブロック要素とは

    ブロック要素は、Webページのまとまり や レイアウトの役割を果たす要素です。

    〜 ブロック要素のイメージ 〜

    block要素のイメージ

    〜 ブロック要素の特徴 〜

    • 前後に改行が入る。
       → ただし、親要素がフレックスボックスの場合、指定内容によっては改行されない。
    • 横幅は、親の幅いっぱいに広がる
       → ただし、widthプロパティで指定した場合、その指定に従う。
    • ブロック用のCSSプロパティが使え、柔軟性が高くなる。
       → プロパティ例:width、height、margin、padding

    ブロック要素は、CSSでdisplay: block;と書くことで指定できます。

    〜 ブロック要素の指定方法 〜

    セレクタ {
        display: block;
        その他スタイル...
    }

    〜 デフォルトがブロック要素となるタグ 〜

    これらは、displayプロパティの指定によって変えることが可能です。

    CSS
    プロパティ
    justify-content|主軸方向(デフォルトは水平)の配置

    justify-content の使い方

    justify-contentは、フレックスボックス内の要素に対して主軸方向の配置を指定できます。

    主軸方向のデフォルトは水平方向です。
    CSSでflex-direction: column;を指定することで主軸は垂直方向となります。

    値には、center (中央寄せ)・flex-start (左寄せ)・flex-end (右寄せ)などが用意されています。

    〜 justify-contentの書き方 〜

    セレクタ {
        justify-content: ;
        その他スタイル...
    }

    〜 justify-contentのの種類 〜

    center

    フレックスボックス内の要素を中央へ寄せます。

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

    フレックスボックス内の要素をへ寄せます。
    デフォルトの設定です。

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

    フレックスボックス内の要素をへ寄せます。

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

    フレックスボックス内の要素を等間隔に配置します。
    行の1番目と最後の要素は、一番端に配置されます。

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

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

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

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

    flexボックスjustify-content:space-aroundのイメージ
    フレックスボックスの アイテム

    フレックスボックス内の要素のことをアイテムと呼びます。

    justify-content のコード例

    【 CSS 】
    【 HTML 】

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

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

    CSS
    プロパティ
    align-items|交差軸(デフォルトは垂直)の配置

    align-items の使い方

    align-itemsは、フレックスボックス内の要素に対して交差軸方向の配置を指定できます。

    交差軸のデフォルトは垂直方向です。
    CSSでflex-direction: column;を指定することで交差軸は水平方向となります。

    値には、center (中央寄せ)・flex-start (上寄せ)・flex-end (下寄せ)などが用意されています。

    〜 align-itemsの書き方 〜

    セレクタ {
        align-items: ;
        その他スタイル...
    }

    〜 align-itemsのの種類 〜

    stretch

    フレックスボックス内の要素で1番大きな要素の高さに揃います。
    デフォルトで設定されます。

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

    フレックスボックス内の要素を垂直の中央へ揃えます。

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

    フレックスボックス内の要素を垂直の上へ揃えます。

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

    フレックスボックス内の要素を垂直の下へ揃えます。

    flexボックスalign-items:flex-endのイメージ
    フレックスボックスの アイテム

    フレックスボックス内の要素のことをアイテムと呼びます。

    align-items のコード例

    【 CSS 】
    【 HTML 】

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

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

    CSS
    プロパティ
    flex-wrap|幅に合わせた折り返しの指定

    flex-wrap の使い方

    flex-wrapは、フレックスボックス内の要素が はみだす場合、はみだす分の要素を折り返すよう指定ができます。

    値には、wrap (折り返す)・no-wrap (折り返さない)などが用意されています。

    〜 flex-wrapの書き方 〜

    セレクタ {
        flex-wrap: ;
        その他スタイル...
    }

    〜 align-itemsのの種類 〜

    wrap

    フレックスボックス内の要素がフレックスボックスの幅をはみ出すとき、要素を折り返す

    no-wrap

    フレックスボックス内の要素がフレックスボックスの幅をはみ出しても、要素を折り返さない
    デフォルトの設定。

    flex-wrap のコード例

    【 CSS 】
    【 HTML 】

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

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

    CSS
    プロパティ
    gap・column-gap・row-gap|要素同士の間隔を指定

    gap・column-gap・row-gap の使い方

    gap・column-gap・row-gapは、フレックスボックス内の要素同士の間隔を指定できます。

    〜 column-gapとrow-gapのイメージ 〜

    flexボックスgapのイメージ

    〜 gap・column-gap・row-gapの違い 〜

    gap

    横と縦方向両方の間隔を指定。

    column-gap

    横方向の間隔を指定。

    row-gap

    縦方向の間隔を指定。

    ポイント

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

    〜 gap・column-gap・row-gapの書き方 〜

    セレクタ {
        gap: 値 (値2);
        その他スタイル...
    }
    (値2)は任意です。

    セレクタ {
        column-gap: ;
        row-gap: ;
        その他スタイル...
    }

    〜 gap・column-gap・row-gapのについて 〜

    gap: 値;

    フレックスボックス内の要素同士の縦横の間隔を一括で指定できます。

    gap: 値1 値2;

    フレックスボックス内の要素同士の間隔を、縦を値1横を値2で指定できます。

    column-gap: 値;

    フレックスボックス内の要素同士の縦のみの間隔を一括で指定できます。

    row-gap: 値;

    フレックスボックス内の要素同士の横のみの間隔を一括で指定できます。

    gapはグリッドにも使える?

    gap はフレックスボックスだけでなくグリッドにも使えます。

    グリッドとは、行・列形式のレイアウトを作成できる要素です。

    〜 グリッドのイメージ 〜

    gridのイメージ

    〜 グリッドの特徴 〜

    • 要素を「行(row)」と「列(column)」に並べることができる。
       → grid-template-columnsプロパティで列、grid-template-rowsプロパティで行を定義する。
    • グリッド関連プロパティによって、子要素の配置や行/列のまたがりなども指定できる。
    • (ブロック要素と同様)前後に改行が入る。
       → ただし、親要素がフレックスボックスの場合、指定内容によっては改行されない。
    • (ブロック要素と同様)横幅は、親の幅いっぱいに広がる。
       → ただし、widthプロパティで指定した場合、その指定に従う。
    • (ブロック要素と同様)ブロック用のCSSプロパティが使え、柔軟性が高くなる。
       → プロパティ例:width、height、margin、padding

    〜 グリッドの指定方法 〜

    セレクタ {
        display: grid;
        その他スタイル...
    }

    gap・column-gap・row-gap のコード例

    【 CSSファイル 】
    【 HTML 】

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

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

    まとめ

    • フレックスボックス(flex)は複数の要素を並べて表示させることができる。
    • CSSのflexはブロック要素も横並びにでき、配置や並び順・間隔・幅を設定できる。
    • justify-content:フレックスボックス内の要素に対して主軸方向(デフォルトは水平方向)の配置を指定できる。
    • align-items:フレックスボックス内の要素に対して交差軸方向(デフォルトは垂直方向)の配置を指定できる。
    • flex-wrap:フレックスボックス内の要素が はみだす場合、はみだす分の要素を折り返すよう指定ができる。
    • gapcolumn-gaprow-gap:フレックスボックス内の要素同士の間隔を指定ができる。
    • gapは横と縦方向、column-gapは横方向、row-gapは縦方向の間隔を指定できる。
    【 2025/08/29 00:00 更新 】