Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

CSSプロパティ辞典

justify-content

フレックスコンテナの主軸方向におけるアイテムの配置方法を指定します。アイテム間やコンテナとの間にどのようにスペースを分配するかを制御できます。

サンプルコード
/* 先頭に寄せる(初期値) */
.container { display: flex; justify-content: flex-start;}

/* 中央に寄せる */
.container-center { display: flex; justify-content: center;}

/* 末尾に寄せる */
.container-end { display: flex; justify-content: flex-end;}

/* 均等配置(両端に寄せる) */
.container-between { display: flex; justify-content: space-between;}

/* 均等配置(等間隔) */
.container-around { display: flex; justify-content: space-around;}

/* 均等配置(完全等間隔) */
.container-evenly { display: flex; justify-content: space-evenly;}
指定可能な値一覧
概要
flex-startアイテムを主軸の先頭に寄せて配置します。初期値です。
flex-endアイテムを主軸の末尾に寄せて配置します。
centerアイテムを主軸の中央に配置します。
space-between最初のアイテムは先頭、最後のアイテムは末尾に配置し、残りのアイテムを均等に配置します。
space-around各アイテムの両側に均等な余白をつけて配置します。アイテム間の間隔は両端の2倍になります。
space-evenlyすべてのアイテム間と両端の間隔を完全に均等にして配置します。
仕様情報
項目内容
初期値flex-start
適用対象フレックスコンテナ(『display: flex』または『display: inline-flex』が指定された要素)
継承しない
アニメーション不可(discrete)
対応ブラウザ
Chrome Chrome
29 以降
28
27
26
25
24
23
22
21
↑ prefix『-webkit-』が必要
20 以前 ×
Firefox Firefox
20 以降
19 以前 ×
Safari Safari
9 以降
8
7
↑ prefix『-webkit-』が必要
6 以前 ×
Edge Edge
12 以降
全バージョンで対応しています
IE IE
11
10 ×
9 ×
8 ×
7 ×
6 ×
Opera Opera
12.1 以降
11 以前 ×
iOS Safari iOS Safari
9 以降
8
7
↑ prefix『-webkit-』が必要
6 以前 ×
Android Android Browser
4.4 以降
3 以前 ×
Chrome Android Chrome Android
最新版
デスクトップ版と同等の対応です
Firefox Android Firefox Android
最新版
デスクトップ版と同等の対応です

※ バージョン情報は MDN / Can I Use に基づいています。

概要

『justify-content』はFlexboxレイアウトで最も頻繁に使用されるプロパティの一つです。主軸方向(『flex-direction: row』なら横方向、『column』なら縦方向)にアイテムをどのように配置するかを制御します。

各値の配置イメージ

flex-start A B C flex-end A B C center A B C space-between A B C space-around A B C 両端の間隔はアイテム間の半分 space-evenly A B C

flex-start(初期値)

アイテムを主軸の先頭に寄せて配置します。『flex-direction: row』の場合は左寄せ、『column』の場合は上寄せになります。初期値なので、特に指定しなくてもこの動作になります。

center

すべてのアイテムを主軸の中央に配置します。ナビゲーションメニューの中央揃えや、要素の中央配置に頻繁に使われます。『align-items: center』と組み合わせることで上下左右の完全な中央配置が実現できます。

/* 上下左右の完全中央配置 */
.center-container {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
}
space-between

最初のアイテムはコンテナの先頭、最後のアイテムはコンテナの末尾に配置され、残りのアイテムは均等な間隔で配置されます。ヘッダーのロゴとナビゲーションを両端に配置する場合などに最適です。

/* ロゴを左、ナビゲーションを右に配置 */
.header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 20px;
}
space-around と space-evenly の違い

space-around — 両端の間隔はアイテム間の半分 A B C 1x 2x 1x space-evenly — すべての間隔が完全に等しい A B C

『space-around』は各アイテムの「両側」に均等な余白を付けるため、アイテム間の間隔は両端の間隔の2倍になります。一方『space-evenly』はすべての間隔(両端を含む)を完全に等しくします。

『flex-direction: column』での注意点

NG: heightなし A B C 余白なし = centerが効かない OK: height: 100vh A B C center ✓

『flex-direction: column』で『justify-content』を使う場合、コンテナに明示的な『height』が必要です。高さが指定されていないと、コンテナの高さがアイテムの合計と同じになるため、スペースを分配する余地がありません。

/* NG: heightがないので効かない */
.ng {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

/* OK: heightを指定すると効く */
.ok {
    display: flex;
    flex-direction: column;
    justify-content: center;
    height: 100vh;
}
関連プロパティ
プロパティ概要
align-items交差軸方向のアイテム配置を制御します。『justify-content』と組み合わせて上下左右の配置を指定できます。
align-content複数行の場合の行間配置を制御します。『justify-content』の交差軸版です。
flex-direction主軸の方向を指定します。『justify-content』が効く方向はこのプロパティの値によって変わります。
gapアイテム間の間隔を直接指定します。『space-between』等のように余白を自動分配するのではなく、固定値の間隔を設定できます。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。