Flexbox is a layout system that arranges items in rows and columns.
A flex container is a parent element that contains flex items.
It arranges the flex items in a row-first or column-first way.
A flex container with 4 flex items, arranged into a row.
<style>
.flexbox {
background-color: #776fac;
padding: 5px;
display: flex;
}
.flexbox > div {
background-color: aliceblue;
margin: 5px;
height: 80px;
line-height: 80px;
text-align: center;
font-size: 18px;
flex: auto;
}
</style>
<div class="flexbox">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
To create a flex container use display:flex.
This instructs the container to use a flexbox layout.
By default, items are aligned in a single row.
Even when space gets tight, the items do not wrap.
A flex container with 7 items in a row.
Resizing the browser will not wrap the items.
<style>
.flex {
background-color: #776fac;
padding: 5px;
display: flex;
}
.flex > div {
background-color: aliceblue;
margin: 5px;
height: 80px;
line-height: 80px;
text-align: center;
font-size: 18px;
flex: auto;
}
</style>
<div class="flex">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
</div>
The flex-direction property defines the flex item packing direction.
Possible values are: row, row-reverse, column, and column-reverse.
The default is row where flex items are packed in a row (horizontally).
flex-direction: row
A flex container with flex-direction
set to row.
<style>
.flex-direction-row {
background-color: #776fac;
padding: 5px;
display: flex;
flex-direction: row;
}
.flex-direction-row > div {
background-color: aliceblue;
margin: 5px;
height: 70px;
line-height: 70px;
text-align: center;
font-size: 18px;
width: 100px;
}
</style>
<div class="flex-direction-row">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
flex-direction: row-reverse
A flex container with flex-direction
set to row-reverse.
<style>
.flex-direction-row-reverse {
background-color: #776fac;
padding: 5px;
display: flex;
flex-direction: row-reverse;
}
.flex-direction-row-reverse > div {
background-color: aliceblue;
margin: 5px;
height: 70px;
line-height: 70px;
text-align: center;
font-size: 18px;
width: 100px;
}
</style>
<div class="flex-direction-row-reverse">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
For details on flex-direction, see our CSS flex-direction Property Reference.
flex-direction: column
A flex container with flex-direction
set to column (vertically).
<style>
.flex-direction-column {
background-color: #776fac;
padding: 5px;
display: flex;
flex-direction: column;
}
.flex-direction-column > div {
background-color: aliceblue;
margin: 5px;
height: 70px;
line-height: 70px;
text-align: center;
font-size: 18px;
width: 100px;
}
</style>
<div class="flex-direction-column">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
flex-direction: column-reverse
A flex container with flex-direction
set to column-reverse.
<style>
.flex-direction-column-reverse {
background-color: #776fac;
padding: 5px;
display: flex;
flex-direction: column-reverse;
}
.flex-direction-column-reverse > div {
background-color: aliceblue;
margin: 5px;
height: 70px;
line-height: 70px;
text-align: center;
font-size: 18px;
width: 100px;
}
</style>
<div class="flex-direction-column-reverse">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
The flex-wrap property allows flex items to wrap.
Possible values are: nowrap, wrap, and wrap-reverse.
The default is nowrap, meaning items stay in a single row or column.
A flexbox with flex-wrap set to wrap.
Resize the browser to see its responsive behavior.
<style>
.flex-wrap {
background-color: #776fac;
padding: 5px;
display: flex;
flex-wrap: wrap;
}
.flex-wrap > div {
background-color: aliceblue;
margin: 5px;
height: 80px;
line-height: 80px;
text-align: center;
font-size: 18px;
width: 100px;
}
</style>
<div class="flex-wrap">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
</div>
flex-wrap: nowrap
A flexbox with flex-wrap set to nowrap.
The items are compressed into a single row.
<style>
.flex-nowrap {
background-color: #776fac;
padding: 5px;
display: flex;
flex-wrap: nowrap;
}
.flex-nowrap > div {
background-color: aliceblue;
margin: 5px;
height: 80px;
line-height: 80px;
text-align: center;
font-size: 18px;
width: 100px;
}
</style>
<div class="flex-nowrap">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
</div>
flex-wrap: wrap-reverse
A flexbox with flex-wrap set to wrap-reverse.
The flex items are packed in reverse order and they wrap.
<style>
.flex-wrap-reverse {
background-color: #776fac;
padding: 5px;
display: flex;
flex-wrap: wrap-reverse;
}
.flex-wrap-reverse > div {
background-color: aliceblue;
margin: 5px;
height: 80px;
line-height: 80px;
text-align: center;
font-size: 18px;
width: 100px;
}
</style>
<div class="flex-wrap-reverse">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
</div>
For details on flex-wrap, see our CSS flex-wrap Property Reference.
The flex-flow property is a shorthand for 2 properties.
They are: flex-direction and flex-wrap.
A flex container with flex-flow
set to row wrap.
The items are packed in rows and they wrap.
<style>
.flex-flow {
background-color: #776fac;
padding: 5px;
display: flex;
flex-flow: row wrap;
}
.flex-flow > div {
background-color: aliceblue;
margin: 5px;
height: 70px;
line-height: 70px;
text-align: center;
font-size: 18px;
width: 100px;
}
</style>
<div class="flex-flow">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
</div>
For details on flex-flow, see our CSS flex-flow Property Reference.
The gap property specifies the space between rows and columns.
The gap value can be any length value, including percentages.
A flex layout with a gap of 25 pixels.
<style>
.flex-gap {
background-color: #776fac;
padding: 5px;
display: flex;
flex-wrap: wrap;
gap: 25px;
}
.flex-gap > div {
background-color: aliceblue;
margin: 5px;
height: 80px;
line-height: 80px;
text-align: center;
font-size: 18px;
width: 100px;
}
</style>
<div class="flex-gap">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
</div>
For details on gap, see our CSS gap Property Reference.
The row-gap property specifies the space between rows.
The gap value can be any length value, including percentages.
A flex layout with a row-gap of 25 pixels.
<style>
.flex-row-gap {
background-color: #776fac;
padding: 5px;
display: flex;
flex-wrap: wrap;
row-gap: 25px;
}
.flex-row-gap > div {
background-color: aliceblue;
margin: 5px;
height: 80px;
line-height: 80px;
text-align: center;
font-size: 18px;
width: 100px;
}
</style>
<div class="flex-row-gap">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
</div>
For details on row-gap, see our CSS row-gap Property Reference.
The column-gap property specifies the space between rows.
The gap value can be any length value, including percentages.
A flex layout with a column-gap of 25 pixels.
<style>
.flex-column-gap {
background-color: #776fac;
padding: 5px;
display: flex;
flex-wrap: wrap;
column-gap: 25px;
}
.flex-column-gap > div {
background-color: aliceblue;
margin: 5px;
height: 80px;
line-height: 80px;
text-align: center;
font-size: 18px;
width: 100px;
}
</style>
<div class="flex-column-gap">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
</div>
For details on column-gap, see our CSS column-gap Property Reference.
A list of all flexbox properties for flexbox.
| Property | Description |
|---|---|
| display | Specifies the type of display flow for the element |
| flex-wrap | Specifies whether to wrap flex items when they run out of space |
| flex-direction | Specifies the direction of the items in a flex container |
| flex-flow | Shorthand for flex-direction and flex-wrap |
| gap | Space between rows and columns. |
| row-gap | Space between rows. |
| column-gap | Space between columns. |
| justify-content | Horizontally aligns items when they do not use all available space |
| align-items | Vertically aligns the flex items when they don't use all available space |
| align-content | Specifies that, instead of aligning flex items, it aligns flex lines |
| order | Specifies the order of an item relative to the other items. |
| align-self | Used on flex items. Overrides the container's align-items setting |
| flex-basis | Specifies the initial width (the basis) of an item. |
| flex-grow | Specifies how an item stretches (grows) in the flex container |
| flex-shrink | Specifies how an item contracts (shrinks) in the flex container |
| flex | Shorthand for flex-grow, flex-shrink, and flex-basis |
This table shows when flexbox support started for each browser.
![]() Chrome
|
29.0 | Aug 2013 |
![]() Firefox
|
28.0 | Mar 2014 |
![]() IE/Edge
|
11.0 | Oct 2013 |
![]() Opera
|
17.0 | Aug 2013 |
![]() Safari
|
9.0 | Sep 2015 |