CSS - flex-wrap Property



CSS flex-wrap property determines whether flex items should remain on a single line or are allowed to wrap onto multiple lines depending on the availability of space in the container they are contained in. The elements must be flexible in order for the property to show its effect.

Syntax

flex-wrap: nowrap | wrap | wrap-reverse | initial | inherit;

Property Values

ValueDescription
nowrapIt specifies that the elements will stay on same line and will not wrap. Default.
wrapIt allows the elements to wrap if needed depending on the available space of flex container.
wrap-reverseIt allows the elements to wrap in reverse direction if needed depending on the available space of flex container.
initialIt sets the property to its default value.
inheritIt inherits the property from the parent element.

Examples of CSS Flex Wrap Property

The following examples explain the flex-wrap property with different values.

Flex Wrap Property with No Wrap Value

To let the flex items remain in the same line within a flex container, we use the nowrap value. The flex items will overflow if they exceed the dimensions of the container. This is shown in the following example.

Example

<!DOCTYPE html>
<html>

<head>
   <style>
      .container {
         background-color: lightgray;
         display: flex;
         flex-wrap: nowrap;
         border: 2px solid #000;
         padding: 10px;
         width: 300px;
      }

      .item {
         background-color: #4CAF50;
         color: white;
         border: 1px solid black;
         padding: 10px;
         margin: 5px;
         flex-basis: 110px;
      }
      .r1 {
         background-color: #6600ff;
      }

      .r2 {
         background-color: #4CAF50;
      }
   </style>
</head>

<body>
   <h2>
      CSS flex-wrap Property
   </h2>
   <h4>
      flex-wrap: no-wrap (flex items will remain
      in same line, will overflow if they exceed
      the dimensions of the container)
   </h4>
   <div class="container">
      <div class="item r1">
         Item 1
      </div>
      <div class="item r1">
         Item 2
      </div>
      <div class="item r2">
         Item 3
      </div>
      <div class="item r2">
         Item 4
      </div>
   </div>
</body>

</html>

Flex Wrap Property with Wrap Value

To let the flex items spread across multiple lines, we use the wrap value. If the flex items start exceeding the dimesions of the container, they will move to the next line depending on the availability of space in the container. This is shown in the following example.

Example

<!DOCTYPE html>
<html>

<head>
   <style>
      .container {
         background-color: lightgray;
         display: flex;
         flex-wrap: wrap;
         border: 2px solid #000;
         padding: 10px;
         width: 300px;
      }

      .item {
         color: white;
         border: 1px solid black;
         padding: 10px;
         margin: 5px;
         flex-basis: 110px;
      }

      .r1 {
         background-color: #6600ff;
      }

      .r2 {
         background-color: #4CAF50;
      }
   </style>
</head>

<body>
   <h2>
      CSS flex-wrap Property
   </h2>
   <h4>
      flex-wrap: wrap (flex items move to multiple
      lines if they exceed container dimensions)
   </h4>
   <div class="container">
      <div class="item r1">
         Item 1
      </div>
      <div class="item r1">
         Item 2
      </div>
      <div class="item r2">
         Item 3
      </div>
      <div class="item r2">
         Item 4
      </div>
   </div>
</body>

</html>

Flex Wrap Property with Wrap Reverse Value

To let the flex items spread across multiple lines in reverse direction, we use the wrap-reverse value. If the flex items start exceeding the dimesions of the container, they will move to the next line in reverse direction depending on the availability of space in the container. This is shown in the following example.

Example

<!DOCTYPE html>
<html>

<head>
   <style>
      .container {
         background-color: lightgray;
         display: flex;
         flex-wrap: wrap-reverse;
         border: 2px solid #000;
         padding: 10px;
         width: 300px;
      }

      .item {
         color: white;
         border: 1px solid black;
         padding: 10px;
         margin: 5px;
         flex-basis: 110px;
      }

      .r1 {
         background-color: #6600ff;
      }

      .r2 {
         background-color: #4CAF50;
      }
   </style>
</head>

<body>
   <h2>
      CSS flex-wrap Property
   </h2>
   <h4>
      flex-wrap: wrap-reverse (flex items move to
      multiple lines in reverse direction if they
      exceed container dimensions)
   </h4>
   <div class="container">
      <div class="item r1">
         Item 1
      </div>
      <div class="item r1">
         Item 2
      </div>
      <div class="item r2">
         Item 3
      </div>
      <div class="item r2">
         Item 4
      </div>
   </div>
</body>

</html>

Supported Browsers

PropertyChromeEdgeFirefoxSafariOpera
flex-wrap29.011.028.09.017.0
css_properties_reference.htm