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.
## Contents
* Will be replaced with the ToC, excluding the "Contents" header
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.
Set the direction of flex items in a flex container with direction utilities. In most cases you can omit the horizontal class here as the browser default is `row`. However, you may encounter situations where you needed to explicitly set this value (like responsive layouts).
Use `.flex-row` to set a horizontal direction.
{% example html %}
<divclass="d-flex flex-row bd-highlight">
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
</div>
{% endexample %}
Use `.flex-column` to set a vertical direction.
{% example html %}
<divclass="d-flex flex-column bd-highlight">
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
</div>
{% endexample %}
Responsive variations also exist for `.flex-row` and `.flex-column`.
Use `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`.
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).
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).
Flexbox can do some pretty awesome things when you mix flex alignments with auto margins.
### With justify-content
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`.
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`.
Change how flex items wrap in a flex container. Choose from no wrapping at all (the browser default) with `.flex-nowrap`, or enable wrapping with `.flex-wrap`.
{% example html %}
<divclass="d-flex flex-nowrap bd-highlight">
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
</div>
{% endexample %}
{% example html %}
<divclass="d-flex flex-wrap bd-highlight">
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
<divclass="p-2 bd-highlight">Flex item</div>
</div>
{% endexample %}
Responsive variations also exist for `.flex-nowrap` and `.flex-wrap`.
Change the _visual_ order 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.
Use `align-content` utilities on flexbox containers to align flex items *together* on 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.
**Heads up!** This property has no affect on single rows of flex items.