Caution

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

CSSプロパティ辞典

flex-wrap

フレックスコンテナ内のアイテムが一行に収まりきらない場合に、折り返すかどうかを指定します。

サンプルコード
/* 折り返さない(初期値) */
.container { display: flex; flex-wrap: nowrap;}

/* 折り返す */
.container-wrap { display: flex; flex-wrap: wrap;}

/* 逆方向に折り返す */
.container-reverse { display: flex; flex-wrap: wrap-reverse;}
指定可能な値一覧
概要
nowrapアイテムを折り返さず一行に並べます。初期値です。アイテムが収まりきらない場合は縮小されます。
wrapアイテムが収まりきらない場合に次の行に折り返します。
wrap-reverse『wrap』と同様に折り返しますが、折り返す方向が逆になります。
仕様情報
項目内容
初期値nowrap
適用対象フレックスコンテナ(『display: flex』または『display: inline-flex』が指定された要素)
継承しない
アニメーション不可(discrete)
対応ブラウザ
Chrome Chrome
29 以降
28
27
26
25
24
23
22
21
↑ prefix『-webkit-』が必要
20 以前 ×
Firefox Firefox
28 以降
27 以前 ×
Safari Safari
9 以降
8
7
↑ prefix『-webkit-』が必要
6 以前 ×
Edge Edge
12 以降
全バージョンで対応しています
IE IE
11
10 ×
9 ×
8 ×
7 ×
6 ×
Opera Opera
16 以降
15
↑ prefix『-webkit-』が必要
14 以前 ×
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 に基づいています。

概要

『flex-wrap』はフレックスコンテナに対して指定するプロパティで、子要素(フレックスアイテム)が主軸方向に収まりきらない場合の折り返し動作を制御します。初期値の『nowrap』ではアイテムは一行に並び、収まりきらない場合はアイテムが縮小されます。

nowrap(初期値)

コンテナ(幅が足りない) Item 1 Item 2 Item 3 Item 4

すべてのアイテムを一行に配置します。アイテムの合計幅がコンテナの幅を超える場合、各アイテムは『flex-shrink』の値に基づいて縮小されます。コンテナからはみ出す場合もあるため、『overflow』プロパティと組み合わせて使うことがあります。

wrap

コンテナ Item 1 Item 2 Item 3 Item 4 折り返し

アイテムが一行に収まりきらない場合、交差軸の方向に次の行へ折り返します。『flex-direction: row』の場合は下方向に、『flex-direction: column』の場合は右方向に新しい行が作られます。レスポンシブレイアウトでは最もよく使われる値です。

wrap-reverse

コンテナ Item 1 Item 2 Item 3 Item 4 逆方向

『wrap』と同様に折り返しますが、新しい行が作られる方向が逆になります。『flex-direction: row』の場合は上方向に折り返されます。あまり使用頻度は高くありませんが、特定のレイアウトで下から上に積み上げるような表現が必要な場合に使えます。

パターン1: レスポンシブなカードレイアウト

flex-wrap: wrap; gap: 20px; Card 1 Card 2 Card 3 Card 4 Card 5

/* カードを横に並べて、収まりきらなければ折り返す */
.card-container {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
}
.card {
    flex: 0 1 300px;  /* 最小300px、縮小あり、伸長なし */
}
パターン2: タグ一覧

HTML CSS JavaScript PHP Python Swift TypeScript Ruby Go

/* タグを横に並べて自然に折り返す */
.tag-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.tag {
    padding: 4px 12px;
    border-radius: 16px;
    background: #eee;
    white-space: nowrap;
}
『nowrap』でアイテムがはみ出す場合の対処

問題: アイテムがコンテナからはみ出す とても長いテキスト... もう一つの要素 はみ出し! 対処: overflow: hidden + min-width: 0 とても長... もう一つ... 収まる ✓

『nowrap』のままアイテムがコンテナからはみ出す場合は、『overflow: hidden』や『overflow: auto』を指定してはみ出した部分を非表示またはスクロール可能にできます。また、『min-width: 0』をアイテムに指定することで、テキストがはみ出す問題を解決できる場合があります。

/* はみ出し防止 */
.container {
    display: flex;
    flex-wrap: nowrap;
    overflow: hidden;
}
.item {
    min-width: 0;  /* テキストのはみ出しを防ぐ */
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
『align-content』との関係

『flex-wrap: wrap』を指定して複数行になった場合、行と行の間隔を制御するのが『align-content』プロパティです。『nowrap』の場合(一行の場合)は『align-content』は効果がありません。

関連プロパティ
プロパティ概要
flex-direction主軸の方向を指定します。『flex-wrap』の折り返し方向は主軸に対する交差軸の方向です。
flex-flow『flex-direction』と『flex-wrap』の一括指定(ショートハンド)です。
align-content複数行になった場合の行間の配置を制御します。『wrap』で折り返しが発生した場合にのみ効果があります。
flex-shrink『nowrap』で一行に収める際、各アイテムがどの程度縮小されるかを制御します。

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