メインコンテンツまでスキップ

flex-wrap

フレックスコンテナでは、デフォルトでアイテムが1行(または1列)に収まるように自動的にサイズが調整されます。 しかし、flex-wrap プロパティを使用することで、アイテムを複数行に折り返すことができます。

flex-wrap プロパティ

flex-wrap プロパティは3つの値を取ることができます:

nowrap(デフォルト)

デフォルトの値で、フレックスアイテムを折り返しません。すべてのアイテムが1行に配置されます。

CSS
.flex-container {
display: flex;
flex-wrap: nowrap; /* デフォルト値 */
}
アイテム 1
アイテム 2
アイテム 3
アイテム 4
アイテム 5
アイテム 6

wrap

フレックスアイテムを必要に応じて複数行に折り返します。新しい行は主軸の正方向に沿って配置されます。

CSS
.flex-container {
display: flex;
flex-wrap: wrap;
}
アイテム 1
アイテム 2
アイテム 3
アイテム 4
アイテム 5
アイテム 6

wrap-reverse

フレックスアイテムを必要に応じて複数行に折り返しますが、新しい行は主軸の逆方向に沿って配置されます。

CSS
.flex-container {
display: flex;
flex-wrap: wrap-reverse;
}
アイテム 1
アイテム 2
アイテム 3
アイテム 4
アイテム 5
アイテム 6

flex-flow ショートハンドプロパティ

flex-directionflex-wrap は、flex-flow プロパティを使用して一括で指定することができます。

CSS
.flex-container {
display: flex;
/* flex-direction と flex-wrap を個別に指定 */
flex-direction: row;
flex-wrap: wrap;

/* flex-flow で一括指定(上記と同じ意味) */
flex-flow: row wrap;
}

flex-flow の書式

flex-flow: <flex-direction> <flex-wrap>;

一般的な組み合わせ例:

CSS
/* 横方向に配置し、必要に応じて折り返す */
.flex-container {
flex-flow: row wrap;
}

/* 縦方向に配置し、折り返しなし */
.flex-container {
flex-flow: column nowrap;
}

/* 横方向逆順に配置し、逆方向に折り返す */
.flex-container {
flex-flow: row-reverse wrap-reverse;
}

実用的な使用例

flex-wrap は、レスポンシブデザインでカードレイアウトやナビゲーションメニューを作成する際に特に有用です。コンテナの幅が小さくなったときに、アイテムが自動的に次の行に折り返されます。

試してみよう

以下のデモで、コンテナの幅を変更して flex-wrap の動作を確認してみましょう。

アイテム 1
アイテム 2
アイテム 3
アイテム 4
アイテム 5
アイテム 6