Flex
Utilize the power of flexbox to create a wide range of layouts.
The Flex component has an essential role in building layouts in UIkit. A lot of components, for example the Grid as well as horizontal navigations, like the Navbar, Subnav, Breadcrumb, Pagination, Tab and Dotnav are built with flexbox and can be used together with the utility classes from this component.
# Usage
To apply the flexbox layout model, use one of the following classes. By default, all flex items are aligned to the left, as wide as their content and matched in height.
Class | Description |
---|---|
.uk-flex | Create the flex container and behave like a block element. |
.uk-flex-inline | Create the flex container and behave like an inline element. |
<div class="uk-flex">
<div></div>
</div>
<div class="uk-flex">
<div class="uk-card uk-card-default uk-card-body">Item 1</div>
<div class="uk-card uk-card-default uk-card-body uk-margin-left">Item 2</div>
<div class="uk-card uk-card-default uk-card-body uk-margin-left">Item 3</div>
</div>
# Horizontal alignment
These classes define the horizontal alignment of flex items and distribute the space between them. Add one or more of them to the flex container in order to configure the alignments of the flex items. By default, flex items are aligned to the left as does the .uk-flex-left
class.
Class | Description |
---|---|
.uk-flex-left | Add this class to align flex items to the left. |
.uk-flex-center | Add this class to center flex items along the main axis. |
.uk-flex-right | Add this class to align flex items to the right. |
.uk-flex-between | Add this class to distribute items evenly, with equal space between the items along the main axis. |
.uk-flex-around | Add this class to distribute items evenly with equal space on both sides of each item. |
<div class="uk-flex uk-flex-center">
<div></div>
</div>
<div class="uk-flex uk-flex-center">
<div class="uk-card uk-card-default uk-card-body">Item 1</div>
<div class="uk-card uk-card-default uk-card-body uk-margin-left">Item 2</div>
<div class="uk-card uk-card-default uk-card-body uk-margin-left">Item 3</div>
</div>
# Responsive
UIkit provides a number of responsive flex classes for horizontal alignment. Basically, they work just like the usual flex alignment classes, except that they have suffixes that represent the breakpoint from which they come to effect.
Class | Description |
---|---|
.uk-flex-left@s .uk-flex-center@s .uk-flex-right@s .uk-flex-between@s .uk-flex-around@s | Only affects device widths of 640px and higher. |
.uk-flex-left@m .uk-flex-center@m .uk-flex-right@m .uk-flex-between@m .uk-flex-around@m | Only affects device widths of 960px and higher. |
.uk-flex-left@l .uk-flex-center@l .uk-flex-right@l .uk-flex-between@l .uk-flex-around@l | Only affects device widths of 1200px and higher. |
.uk-flex-left@xl .uk-flex-center@xl .uk-flex-right@xl .uk-flex-between@xl .uk-flex-around@xl | Only affects device widths of 1600px and higher. |
<div class="uk-flex uk-flex-center@m uk-flex-right@l">
<div></div>
</div>
<div class="uk-flex uk-flex-center@m uk-flex-right@l">
<div class="uk-card uk-card-default uk-card-body">Item 1</div>
<div class="uk-card uk-card-default uk-card-body uk-margin-left">Item 2</div>
<div class="uk-card uk-card-default uk-card-body uk-margin-left">Item 3</div>
</div>
# Vertical alignment
These classes define the vertical alignment of flex items. By default, flex items fill the height of their container as does the .uk-flex-stretch
class.
Class | Description |
---|---|
.uk-flex-stretch | Add this class to expand flex items to fill the height of their parent. |
.uk-flex-top | Add this class to align flex items to the top. |
.uk-flex-middle | Add this class to center flex items along the cross axis. |
.uk-flex-bottom | Add this class to align flex items to the bottom. |
<div class="uk-flex uk-flex-middle"></div>
<div class="uk-flex uk-flex-middle uk-text-center">
<div class="uk-card uk-card-default uk-card-body">Item 1</div>
<div class="uk-card uk-card-default uk-card-body uk-margin-left">Item 2<br>…</div>
<div class="uk-card uk-card-default uk-card-body uk-margin-left">Item 3<br>…<br>…</div>
</div>
# Direction modifiers
These classes define the axis that flex items are placed on and their direction. By default, items run horizontally from left to right as does the .uk-flex-row
class.
Class | Description |
---|---|
.uk-flex-row | Add this class to lay out flex items as horizontal rows. |
.uk-flex-row-reverse | Add this class to lay out flex items from right to left. |
.uk-flex-column | Add this class to lay out flex items as vertical columns. |
.uk-flex-column-reverse | Add this class to lay out flex items from bottom to top. |
<div class="uk-flex uk-flex-column"></div>
<div class="uk-flex uk-flex-column uk-width-1-3">
<div class="uk-card uk-card-default uk-card-body">Item 1</div>
<div class="uk-card uk-card-default uk-card-body uk-margin-top">Item 2</div>
<div class="uk-card uk-card-default uk-card-body uk-margin-top">Item 3</div>
</div>
# Wrap modifiers
By default, flex items are fit into one line and run from left to right. Add one of these classes to modify the behavior of wrapping flex items.
Class | Description |
---|---|
.uk-flex-wrap | Add this class to make flex items wrap into another line when they no longer fit their container. |
.uk-flex-wrap-reverse | Add this class to change the items' direction so that they run from right to left. |
.uk-flex-nowrap | Add this class to force the flex items into one line. This is the default behavior. |
The following classes modify the alignment of wrapping flex items.
Class | Description |
---|---|
.uk-flex-wrap-stretch | Add this class, so that item lines stretch to take up the remaining space |
.uk-flex-wrap-between | Add this class to distribute item lines evenly, with the first row at the top and last row at the bottom of the container. |
.uk-flex-wrap-around | Add this class to distribute lines evenly with equal space at the top and bottom of each row. |
.uk-flex-wrap-top | Add this class to align multiline flex items to the top. |
.uk-flex-wrap-middle | Add this class to vertically center multirow flex items. |
.uk-flex-wrap-bottom | Add this class to align multiline flex items to the bottom. |
<div class="uk-flex uk-flex-wrap uk-flex-wrap-around"></div>
<div class="uk-flex uk-flex-wrap uk-flex-wrap-around uk-background-muted uk-height-medium">
<div class="uk-width-1-3 uk-card uk-card-default uk-card-body uk-card-small">Item 1</div>
<div class="uk-width-1-2 uk-card uk-card-default uk-card-body uk-card-small uk-margin-left">Item 2</div>
<div class="uk-width-1-3 uk-card uk-card-default uk-card-body uk-card-small">Item 3</div>
<div class="uk-width-1-3 uk-card uk-card-default uk-card-body uk-card-small uk-margin-left">Item 4</div>
<div class="uk-width-1-2 uk-card uk-card-default uk-card-body uk-card-small">Item 5</div>
<div class="uk-width-1-3 uk-card uk-card-default uk-card-body uk-card-small uk-margin-left">Item 6</div>
</div>
# Item order
By default, flex items are laid out according to the source order. To display a certain item as the first or last one, just add one of these classes.
Class | Description |
---|---|
.uk-flex-first | Displays the item as the first one. |
.uk-flex-last | Displays the item as the last one. |
.uk-flex-first@s .uk-flex-last@s | Affects device widths of 640px and higher. |
.uk-flex-first@m .uk-flex-last@m | Affects device widths of 960px and higher. |
.uk-flex-first@l .uk-flex-last@l | Affects device widths of 1200px and higher. |
.uk-flex-first@xl .uk-flex-last@xl | Affects device widths of 1600px and higher. |
<div class="uk-flex">
<div></div>
<div class="uk-flex-first"></div>
</div>
<div class="uk-flex">
<div class="uk-card uk-card-default uk-card-body uk-flex-last uk-margin-left">Item 1</div>
<div class="uk-card uk-card-default uk-card-body uk-flex-first">Item 2</div>
<div class="uk-card uk-card-default uk-card-body uk-margin-left">Item 3</div>
</div>
# Item dimensions
To determine how much space a flex item should take up, add one of the following classes to the item. By default, items determine their size by their content, but are allowed to shrink.
Class | Description |
---|---|
.uk-flex-none | The box's size is determined by its content. |
.uk-flex-auto | The space is allocated considering the item's content. |
.uk-flex-1 | The space is allocated solely based on flex. |
# Flex and grid
The Flex component can be combined with a grid from the Grid component.
<div class="uk-flex-middle" uk-grid>
<div class="uk-width-2-3@m">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.</p>
</div>
<div class="uk-width-1-3@m uk-flex-first">
<img src="images/light.jpg" width="1800" height="1200" alt="Image">
</div>
</div>