Flexbox is used to quickly manage the layout, alignment and sizing of grid columns, navigation, components, and more with a full suite of responsive flexbox utilities.
You can also do complex implementations using custom CSS.
Flexbox Properties:
- Enable flex behaviors
- Direction
- Justify content
- Align items
- Align self
- Auto margins with justify-content
- Auto margins with align-items
- Wrap
- Order
- Align content
Enable Flex Behavior
The “display” utility is used to create a flexible container and transform direct children elements into flex items.
You can modify flex container and items further with additional flex properties.
Default flexbox container:
<div class="d-flex p-2">I'm a flexbox container!</div>
Inline Flexbox container:
<div class="d-inline-flex p-2">I'm an inline flexbox container!</div>
Responsive flexbox container:
Responsive variations also exist for .d-flex and .d-inline-flex.
- .d-flex
- .d-inline-flex
- .d-sm-flex
- .d-sm-inline-flex
- .d-md-flex
- .d-md-inline-flex
- .d-lg-flex
- .d-lg-inline-flex
- .d-xl-flex
- .d-xl-inline-flex
Flexbox Direction
You can set the direction of flex item in a flex container using direction utilities. It is not necessary to add a horizontal class here because by default it is row. If you find a situation where you have to set this value you can use “.flex-row” to set a horizontal direction (the browser default), or ?.flex-row-reverse? to start the horizontal direction from the opposite side.
Example
Horizontal Direction (By default)
<div class="d-flex flex-row">
<div class="p-2">Flex item 1</div>
<div class="p-2">Flex item 2</div>
<div class="p-2">Flex item 3</div>
</div>
<div class="d-flex flex-row-reverse">
<div class="p-2">Flex item 1</div>
<div class="p-2">Flex item 2</div>
<div class="p-2">Flex item 3</div>
</div>
Vertical Direction
You can use the “.flex-column” to set a vertical direction, or “.flex-column-reverse” to start the vertical direction from the opposite side.
Example
<div class="d-flex flex-column">
<div class="p-2">Flex item 1</div>
<div class="p-2">Flex item 2</div>
<div class="p-2">Flex item 3</div>
</div>
<div class="d-flex flex-column-reverse">
<div class="p-2">Flex item 1</div>
<div class="p-2">Flex item 2</div>
<div class="p-2">Flex item 3</div>
</div>
Responsive variations can also be used for flex-direction:
Rows:
.flex-row
.flex-row-reverse
Columns:
.flex-column
.flex-column-reverse
Small:
.flex-sm-row
.flex-sm-row-reverse
.flex-sm-column
.flex-sm-column-reverse
Medium:
.flex-md-row
.flex-md-row-reverse
.flex-md-column
.flex-md-column-reverse
Large:
.flex-lg-row
.flex-lg-row-reverse
.flex-lg-column
.flex-lg-column-reverse
Extra-large:
.flex-xl-row
.flex-xl-row-reverse
.flex-xl-column
.flex-xl-column-reverse
Justify Content
The justify-content utility is used to change the alignment of flex-items on the main axis.
Example:
<div class="d-flex justify-content-start">...</div>
<div class="d-flex justify-content-end">...</div>
<div class="d-flex justify-content-center">...</div>
<div class="d-flex justify-content-between">...</div>
<div class="d-flex justify-content-around">...</div>
Responsive variations for justify-content
You can also use responsive variations with justify-content.
- .justify-content-start
- .justify-content-end
- .justify-content-center
- .justify-content-between
- .justify-content-around
- .justify-content-sm-start
- .justify-content-sm-end
- .justify-content-sm-center
- .justify-content-sm-between
- .justify-content-sm-around
- .justify-content-md-start
- .justify-content-md-end
- .justify-content-md-center
- .justify-content-md-between
- .justify-content-md-around
- .justify-content-lg-start
- .justify-content-lg-end
- .justify-content-lg-center
- .justify-content-lg-between
- .justify-content-lg-around
- .justify-content-xl-start
- .justify-content-xl-end
- .justify-content-xl-center
- .justify-content-xl-between
- .justify-content-xl-around
Align Items
The align items utility is used on flexbox containers to change the alignment of flex items on the cross axis. You can choose from start, end, center, baseline, or stretch (browser default).
Example:
<div class="d-flex align-items-start">...</div>
<div class="d-flex align-items-end">...</div>
<div class="d-flex align-items-center">...</div>
<div class="d-flex align-items-baseline">...</div>
<div class="d-flex align-items-stretch">...</div>
Responsive variations for align-items
You can also use responsive variations for align-items.
- .align-items-start
- .align-items-end
- .align-items-center
- .align-items-baseline
- .align-items-stretch
- .align-items-sm-start
- .align-items-sm-end
- .align-items-sm-center
- .align-items-sm-baseline
- .align-items-sm-stretch
- .align-items-md-start
- .align-items-md-end
- .align-items-md-center
- .align-items-md-baseline
- .align-items-md-stretch
- .align-items-lg-start
- .align-items-lg-end
- .align-items-lg-center
- .align-items-lg-baseline
- .align-items-lg-stretch
- .align-items-xl-start
- .align-items-xl-end
- .align-items-xl-center
- .align-items-xl-baseline
- .align-items-xl-stretch
Align Self
The align-self-utility is used on flexbox items to individually change their alignment on the cross axis. You can choose from the same options as align-items: start, end, center, baseline, or stretch (browser default).
Example:
<div class="align-self-start">Aligned flex item</div>
<div class="align-self-end">Aligned flex item</div>
<div class="align-self-center">Aligned flex item</div>
<div class="align-self-baseline">Aligned flex item</div>
<div class="align-self-stretch">Aligned flex item</div>
Responsive variation for align-self
You can also use responsive variations for align-self.
- .align-self-start
- .align-self-end
- .align-self-center
- .align-self-baseline
- .align-self-stretch
- .align-self-sm-start
- .align-self-sm-end
- .align-self-sm-center
- .align-self-sm-baseline
- .align-self-sm-stretch
- .align-self-md-start
- .align-self-md-end
- .align-self-md-center
- .align-self-md-baseline
- .align-self-md-stretch
- .align-self-lg-start
- .align-self-lg-end
- .align-self-lg-center
- .align-self-lg-baseline
- .align-self-lg-stretch
- .align-self-xl-start
- .align-self-xl-end
- .align-self-xl-center
- .align-self-xl-baseline
- .align-self-xl-stretch
Auto margins
In flexbox, you can mix flex alignments with auto margins to do some pretty awesome things.
With justify-content
You can easily move all flex items to one side, but keep another on the opposite end by mixing justify-content with margin-right: auto or margin-left: auto.
Example:
<div class="d-flex justify-content-end">
<div class="mr-auto p-2">Flex item</div>
<div class="p-2">Flex item</div>
<div class="p-2">Flex item</div>
</div>
<div class="d-flex justify-content-start">
<div class="p-2">Flex item</div>
<div class="p-2">Flex item</div>
<div class="ml-auto p-2">Flex item</div>
</div>
With align-items
You can similarly move one flex item to the top or bottom of a container by mixing align-items, flex-direction: column, and margin-top: auto or margin-bottom: auto.
Example:
<div class="d-flex align-items-start flex-column" style="height: 200px;">
<div class="mb-auto p-2">Flex item</div>
<div class="p-2">Flex item</div>
<div class="p-2">Flex item</div>
</div>
<div class="d-flex align-items-end flex-column" style="height: 200px;">
<div class="p-2">Flex item</div>
<div class="p-2">Flex item</div>
<div class="mt-auto p-2">Flex item</div>
</div>
Wrap
It is used to change how flex items wrap in a flex container. You can choose the following:
No wrapping: .flex-nowrap
Wrapping: .flex-wrap
Reverse wrapping: .flex-wrap-reverse
Responsive variation for flex-wrap
You can also use responsive variations for flex-wrap.
- .flex-nowrap
- .flex-wrap
- .flex-wrap-reverse
- .flex-sm-nowrap
- .flex-sm-wrap
- .flex-sm-wrap-reverse
- .flex-md-nowrap
- .flex-md-wrap
- .flex-md-wrap-reverse
- .flex-lg-nowrap
- .flex-lg-wrap
- .flex-lg-wrap-reverse
- .flex-xl-nowrap
- .flex-xl-wrap
- .flex-xl-wrap-reverse
Order:
It is used to change the visual order of specific flex items with a handful of order utilities.
You can make an item first or last, as well as a reset to use the DOM order. As order takes any integer value (e.g., 5), add custom CSS for any additional values needed.
Example:
<div class="d-flex flex-nowrap">
<div class="flex-last p-2">First flex item</div>
<div class="p-2">Second flex item</div>
<div class="flex-first p-2">Third flex item</div>
</div>
Responsive variations for order
You can also use responsive variations for order:
- .order-first
- .order-last
- .order-unordered
- .order-sm-first
- .order-sm-last
- .order-sm-unordered
- .order-md-first
- .order-md-last
- .order-md-unordered
- .order-lg-first
- .order-lg-last
- .order-lg-unordered
- .order-xl-first
- .order-xl-last
- .order-xl-unordered
Align Content
The align-content utility is used on flexbox container to align flex items together on the cross axis. You can choose from start (browser default), end, center, between, around, or stretch.
To demonstrate these utilities, we?ve enforced flex-wrap: wrap and increased the number of flex items.
Heads up! This property has no affect on single rows of flex items.
start:
<div class="d-flex align-content-start flex-wrap">
...
</div>
end:
<div class="d-flex align-content-end flex-wrap">...</div>
center:
<div class="d-flex align-content-center flex-wrap">...</div>
between:
<div class="d-flex align-content-between flex-wrap">...</div>
around:
<div class="d-flex align-content-around flex-wrap">...</div>
stretch:
<div class="d-flex align-content-stretch flex-wrap">...</div>
Responsive variations for align-content
You can also use responsive variations for align-content:
- .align-content-start
- .align-content-end
- .align-content-center
- .align-content-around
- .align-content-stretch
- .align-content-sm-start
- .align-content-sm-end
- .align-content-sm-center
- .align-content-sm-around
- .align-content-sm-stretch
- .align-content-md-start
- .align-content-md-end
- .align-content-md-center
- .align-content-md-around
- .align-content-md-stretch
- .align-content-lg-start
- .align-content-lg-end
- .align-content-lg-center
- .align-content-lg-around
- .align-content-lg-stretch
- .align-content-xl-start
- .align-content-xl-end
- .align-content-xl-center
- .align-content-xl-around
- .align-content-xl-stretch
Leave a Reply