Flex
A primitive layout component that maps directly to CSS flexbox. Use it to compose any flex layout — horizontal or vertical, wrapping or not, with full control over alignment and justification.
TIP
For controlling individual children inside a FluxFlex container — like making one child grow or shrink — use FluxFlexItem.
Props
align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline'
The alignment of the elements on the cross axis (`align-items`).
direction?: 'horizontal' | 'vertical'
The direction in which the elements flow.
Default: horizontal
gap?: number
The gap between each element in pixels.
is-inline?: boolean
If true, the flex container uses `inline-flex` instead of `flex`.
justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly'
The alignment of the elements on the main axis (`justify-content`).
tag?: keyof HTMLElementTagNameMap
The HTML tag to use for the flex container.
Default: div
wrap?: 'wrap' | 'nowrap' | 'wrap-reverse'
If and how the elements should wrap.
Default: nowrap
Slots
default
The content of the flex container.
Available variants
- Item — for controlling individual children inside a flex container
Stack
Specialised flex containers for stacking specific kinds of content:
Examples
Horizontal
A horizontal flex container.
<template>
<FluxFlex :gap="9">
<PreviewColumn>One</PreviewColumn>
<PreviewColumn>Two</PreviewColumn>
<PreviewColumn>Three</PreviewColumn>
</FluxFlex>
</template>
<script
setup
lang="ts">
import { FluxFlex } from '@flux-ui/components';
</script>Vertical
A vertical flex container.
<template>
<FluxFlex
direction="vertical"
:gap="9">
<PreviewColumn>One</PreviewColumn>
<PreviewColumn>Two</PreviewColumn>
<PreviewColumn>Three</PreviewColumn>
</FluxFlex>
</template>
<script
setup
lang="ts">
import { FluxFlex } from '@flux-ui/components';
</script>Align and justify
Combine `align` and `justify` to center content on both axes.
<template>
<FluxFlex
align="center"
:gap="9"
justify="center"
style="height: 180px; width: 100%">
<PreviewColumn>Centered</PreviewColumn>
<PreviewColumn>Both axes</PreviewColumn>
</FluxFlex>
</template>
<script
setup
lang="ts">
import { FluxFlex } from '@flux-ui/components';
</script>Wrapping
Use `wrap` to allow children to flow onto multiple lines.
<template>
<FluxFlex
:gap="9"
wrap="wrap">
<PreviewColumn
v-for="i in 12"
:key="i">
Item {{ i }}
</PreviewColumn>
</FluxFlex>
</template>
<script
setup
lang="ts">
import { FluxFlex } from '@flux-ui/components';
</script>