Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
- トップページ
- CSSプロパティ辞典
- flex-wrap
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) |
対応ブラウザ
28 △
27 △
26 △
25 △
24 △
23 △
22 △
21 △
20 以前 ×
27 以前 ×
7 △
6 以前 ×
8 ×
7 ×
6 ×
14 以前 ×
7 △
6 以前 ×
Android Browser
4.4 以降 ○
3 以前 ×概要
『flex-wrap』はフレックスコンテナに対して指定するプロパティで、子要素(フレックスアイテム)が主軸方向に収まりきらない場合の折り返し動作を制御します。初期値の『nowrap』ではアイテムは一行に並び、収まりきらない場合はアイテムが縮小されます。
nowrap(初期値)
すべてのアイテムを一行に配置します。アイテムの合計幅がコンテナの幅を超える場合、各アイテムは『flex-shrink』の値に基づいて縮小されます。コンテナからはみ出す場合もあるため、『overflow』プロパティと組み合わせて使うことがあります。
wrap
アイテムが一行に収まりきらない場合、交差軸の方向に次の行へ折り返します。『flex-direction: row』の場合は下方向に、『flex-direction: column』の場合は右方向に新しい行が作られます。レスポンシブレイアウトでは最もよく使われる値です。
wrap-reverse
『wrap』と同様に折り返しますが、新しい行が作られる方向が逆になります。『flex-direction: row』の場合は上方向に折り返されます。あまり使用頻度は高くありませんが、特定のレイアウトで下から上に積み上げるような表現が必要な場合に使えます。
パターン1: レスポンシブなカードレイアウト
/* カードを横に並べて、収まりきらなければ折り返す */
.card-container {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.card {
flex: 0 1 300px; /* 最小300px、縮小あり、伸長なし */
}
パターン2: タグ一覧
/* タグを横に並べて自然に折り返す */
.tag-list {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.tag {
padding: 4px 12px;
border-radius: 16px;
background: #eee;
white-space: nowrap;
}
『nowrap』でアイテムがはみ出す場合の対処
『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』で一行に収める際、各アイテムがどの程度縮小されるかを制御します。 |
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。