Flex
Quickly manage the layout, alignment, and sizing of grid columns, navigation, components, and more with a full suite of responsive flexbox utilities. For more complex implementations, custom CSS may be necessary.
Flex on TailwindFlex Behaviors
Apply display utilities to create a flexbox container and transform direct children elements into flex items. Flex containers and items are able to be modified further with additional flex properties.
<div class="flex p-2 bg-body-secondary mb-2">Flexbox container!</div>
<div class="inline-flex p-2 bg-body-secondary">Inline flexbox container!</div>
Direction Row
Use .flex-row to set a horizontal direction (the browser default), or .flex-row-reverse to start the horizontal direction from the opposite side.
<div class="flex bg-body-secondary mb-4 flex-row">
<div class="p-2 bg-body-secondary border">Flex item 1</div>
<div class="p-2 bg-body-secondary border">Flex item 2</div>
<div class="p-2 bg-body-secondary border">Flex item 3</div>
</div>
<div class="flex bg-body-secondary mb-4 flex-row-reverse">
<div class="p-2 bg-body-secondary border">Flex item 1</div>
<div class="p-2 bg-body-secondary border">Flex item 2</div>
<div class="p-2 bg-body-secondary border">Flex item 3</div>
</div>
Direction Column
Use
.flex-col
to set a vertical direction, or
.flex-col-reverse
to start the vertical direction from the opposite side
<div class="flex bg-body-secondary mb-4 flex-col">
<div class="p-2 bg-body-secondary border">Flex item 1</div>
<div class="p-2 bg-body-secondary border">Flex item 2</div>
<div class="p-2 bg-body-secondary border">Flex item 3</div>
</div>
<div class="flex bg-body-secondary mb-4 flex-col-reverse">
<div class="p-2 bg-body-secondary border">Flex item 1</div>
<div class="p-2 bg-body-secondary border">Flex item 2</div>
<div class="p-2 bg-body-secondary border">Flex item 3</div>
</div>
Justify Content
justify-content justify-content utilities on flexbox containers to change the alignment of flex items on the main axis (the x-axis to start, y-axis if flex-direction: column ). Choose from start (browser default), end ,center ,between , or around.
<div class="flex justify-start bg-body-secondary mb-2">
<div class="p-2 bg-body-secondary border">Flex Item</div>
</div>
<div class="flex justify-end bg-body-secondary mb-2">
<div class="p-2 bg-body-secondary border">Flex Item</div>
</div>
<div class="flex justify-center bg-body-secondary mb-2">
<div class="p-2 bg-body-secondary border">Flex Item</div>
</div>
<div class="flex justify-between bg-body-secondary mb-2">
<div class="p-2 bg-body-secondary border">Flex Item</div>
</div>
<div class="flex justify-around bg-body-secondary mb-2">
<div class="p-2 bg-body-secondary border">Flex Item</div>
</div>
Align items
Use align-items utilities on flexbox containers to change the alignment of flex items on the cross axis (the y-axis to start, x-axis if flex-direction: column ). Choose from start ,end ,center ,baseline , or stretch (browser default).
<div class="flex items-start bg-body-secondary mb-2 h-20">
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex items-end bg-body-secondary mb-2 h-20">
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex items-center bg-body-secondary mb-2 h-20">
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex items-baseline bg-body-secondary mb-2 h-20">
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex items-stretch bg-body-secondary mb-2 h-20">
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
Align self
Use align-self utilities on flexbox items to individually change their alignment on the cross axis (the y-axis to start, x-axis if flex-direction: column ). Choose from the same options as align-items: start, end ,center ,baseline , or stretch (browser default).
<div class="flex bg-body-secondary mb-2 h-20">
<div class="border p-2 bg-body-secondary">Flex Item</div>
<div class="border p-2 bg-body-secondary self-start">Align self start</div>
<div class="border p-2 bg-body-secondary">Flex Item</div>
</div>
<div class="flex bg-body-secondary mb-2 h-20">
<div class="border p-2 bg-body-secondary">Flex Item</div>
<div class="border p-2 bg-body-secondary self-end">Align self end</div>
<div class="border p-2 bg-body-secondary">Flex Item</div>
</div>
<div class="flex bg-body-secondary mb-2 h-20">
<div class="border p-2 bg-body-secondary">Flex Item</div>
<div class="border p-2 bg-body-secondary self-center">Align self center</div>
<div class="border p-2 bg-body-secondary">Flex Item</div>
</div>
<div class="flex bg-body-secondary mb-2 h-20">
<div class="border p-2 bg-body-secondary">Flex Item</div>
<div class="border p-2 bg-body-secondary self-baseline">Align self baseline</div>
<div class="border p-2 bg-body-secondary">Flex Item</div>
</div>
<div class="flex bg-body-secondary mb-2 h-20">
<div class="border p-2 bg-body-secondary">Flex Item</div>
<div class="border p-2 bg-body-secondary self-stretch">Align self stretch</div>
<div class="border p-2 bg-body-secondary">Flex Item</div>
</div>
Flex Grow
Use .grow-* utilities to toggle a flex item’s ability to grow to fill available space. In the example below, the.grow-1 elements uses all available space it can, while allowing the remaining two flex items their necessary space.
<div class="flex bg-body-secondary">
<div class="p-2 grow bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Third flex item</div>
</div>
Flex Shrink
Use .shrink-* utilities to toggle a flex item’s ability to shrink if necessary. In the example below, the second flex item with .shrink-1 is forced to wrap its contents to a new line, “shrinking” to allow more space for the previous flex item with .w-full.
<div class="flex bg-body-secondary">
<div class="p-2 w-full bg-body-secondary border">Flex item</div>
<div class="p-2 shrink bg-body-secondary border">Flex item</div>
</div>
Auto margins
Flexbox can do some pretty awesome things when you mix flex alignments with auto margins. Shown below are three examples of controlling flex items via auto margins: default (no auto margin), pushing two items to the right ( .me-auto ), and pushing two items to the left (.ms-auto ).
<div class="flex bg-body-secondary mb-2">
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex bg-body-secondary mb-2">
<div class="me-auto p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex bg-body-secondary mb-2">
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="ms-auto p-2 bg-body-secondary border">Flex item</div>
</div>
With align-items
Vertically 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.
<div class="flex flex-col bg-body-secondary mb-4 h-50 items-start">
<div class="mb-auto p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex flex-col bg-body-secondary mb-4 h-50 items-end">
<div class="mb-auto p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
Wrap
Change how flex items wrap in a flex container. Choose from no wrapping at all (the browser default) with .flex-nowrap , wrapping with.flex-wrap , or reverse wrapping with.flex-wrap-reverse .
<div class="flex flex-nowrap mb-4 bg-body-secondary border py-4 w-32">
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex mb-4 bg-body-secondary border flex-wrap">
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex mb-4 bg-body-secondary border flex-wrap-reverse">
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
Order
Change the visualorder of specific flex items with a handful of order utilities. We only provide options for making 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.
<div class="flex flex-nowrap bg-body-secondary">
<div class="order-3 p-2 bg-body-secondary border">First flex item</div>
<div class="order-2 p-2 bg-body-secondary border">Second flex item</div>
<div class="order-1 p-2 bg-body-secondary border">Third flex item</div>
</div>
Aligh content
Use align-content utilities on flexbox containers to align flex itemstogetheron the cross axis. 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.
<div class="flex flex-wrap bg-body-secondary mb-4 h-75 content-start">
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex flex-wrap bg-body-secondary mb-4 h-75 content-center">
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex flex-wrap bg-body-secondary mb-4 h-75 content-end">
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex flex-wrap bg-body-secondary mb-4 h-75 content-between">
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex flex-wrap bg-body-secondary mb-4 h-75 content-around">
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>
<div class="flex flex-wrap bg-body-secondary mb-4 h-75 content-stretch">
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
<div class="p-2 bg-body-secondary border">Flex item</div>
</div>

