The flex-wrap
property is a sub-property of the Flexible Box Layout module.
It defines whether the flex items are forced in a single line or can be flowed into multiple lines. If set to multiple lines, it also defines the cross-axis which determines the direction new lines are stacked in.
Reminder: the cross axis is the axis perpendicular to the main axis. Its direction depends on the main axis direction.
The flex-wrap
property accepts 3 different values:
nowrap
(default): single-line which may cause the container to overflowwrap
: multi-lines, direction is defined byflex-direction
wrap-reverse
: multi-lines, opposite to direction defined byflex-direction
Syntax
flex-wrap: nowrap | wrap | wrap-reverse .flex-container { flex-wrap: wrap; }
Demo
In the following demo:
- The red list is set to
nowrap
- The yellow list is set to
wrap
- The blue list is set to
wrap-reverse
Note: the flex-direction
is set to the default value: row
.
<ul class="flex-container nowrap"> <li class="flex-item">1</li> <li class="flex-item">2</li> <li class="flex-item">3</li> <li class="flex-item">4</li> <li class="flex-item">5</li> <li class="flex-item">6</li> <li class="flex-item">7</li> <li class="flex-item">8</li> </ul> <ul class="flex-container wrap"> <li class="flex-item">1</li> <li class="flex-item">2</li> <li class="flex-item">3</li> <li class="flex-item">4</li> <li class="flex-item">5</li> <li class="flex-item">6</li> <li class="flex-item">7</li> <li class="flex-item">8</li> </ul> <ul class="flex-container wrap-reverse"> <li class="flex-item">1</li> <li class="flex-item">2</li> <li class="flex-item">3</li> <li class="flex-item">4</li> <li class="flex-item">5</li> <li class="flex-item">6</li> <li class="flex-item">7</li> <li class="flex-item">8</li> </ul>
.flex-container { padding: 0; margin: 0; list-style: none; border: 1px solid silver; -ms-box-orient: horizontal; display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -moz-flex; display: -webkit-flex; display: flex; } .nowrap { -webkit-flex-wrap: nowrap; flex-wrap: nowrap; } .wrap { -webkit-flex-wrap: wrap; flex-wrap: wrap; } .wrap li { background: gold; } .wrap-reverse { -webkit-flex-wrap: wrap-reverse; flex-wrap: wrap-reverse; } .wrap-reverse li { background: deepskyblue; } .flex-item { background: tomato; padding: 5px; width: 100px; height: 100px; margin: 10px; line-height: 100px; color: white; font-weight: bold; font-size: 2em; text-align: center; }
Related Properties
Browser Support
- (modern) means the recent syntax from the specification (e.g.
display: flex;
) - (hybrid) means an odd unofficial syntax from 2011 (e.g.
display: flexbox;
) - (old) means the old syntax from 2009 (e.g. display: box;)
Chrome | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
21+ (modern) 20- (old) |
3.1+ (old) | 2-21 (old) 22+ (new) |
12.1+ (modern) | 10+ (hybrid) | 2.1+ (old) | 3.2+ (old) |
Blackberry browser 10+ supports the new syntax.
Leave a Reply