Use FlexBox...
- To layout content to best organize and fill the available space.
- To align elements within a container with a specific direction.
The preview has been updated.
<Card bordered><FlexBoxstyle={{ height: 360 }}justifyContent="center"alignItems="center"flexWrap="wrap"flexDirection={{ xs: 'row', sm: 'column' }}>{[1, 2, 3, 4, 5, 6].map(u => (<Cardkey={u}m={2}bgc="accent"style={{ border: '1px solid red', height: 90, width: 90 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">{u}</FlexBox></Card>))}</FlexBox></Card>
<div class="swan-card swan-card-bordered"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-flex-wrap-wrap swan-flex-box-flex-direction-row swan-flex-box-flex-direction-column-sm swan-flex-box-justify-content-center"style="height: 360px;"><divclass="swan-card swan-m-2 swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">1</div></div><divclass="swan-card swan-m-2 swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">2</div></div><divclass="swan-card swan-m-2 swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">3</div></div><divclass="swan-card swan-m-2 swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">4</div></div><divclass="swan-card swan-m-2 swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">5</div></div><divclass="swan-card swan-m-2 swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">6</div></div></div></div>
Flexbox props support responsive values, allowing you to provide values per breakpoint (xs
, sm
, md
, lg
, xl
) for layout control.
Justify Content
Use justifyContent
to align items along the primary axis, which is the x-axis by default.
The preview has been updated.
<Card bordered><FlexBoxstyle={{ height: 260 }}justifyContent="space-evenly"alignItems="center"flexWrap="wrap"flexDirection="row"gap="3"><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: 120 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">1</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: 160 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">2</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: 90 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">3</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: 90 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">4</FlexBox></Card></FlexBox></Card>
<div class="swan-card swan-card-bordered"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-flex-wrap-wrap swan-flex-box-flex-direction-row swan-flex-box-justify-content-space-evenly swan-flex-box-gap-3"style="height: 260px;"><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 120px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">1</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 160px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">2</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">3</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">4</div></div></div></div>
Align Items
Use alignItems
to align items along the secondary axis, which is the y-axis by default.
The preview has been updated.
<Card bordered><FlexBoxstyle={{ height: 260 }}justifyContent="center"alignItems="flex-end"flexWrap="wrap"flexDirection="row"gap="3"><Cardbgc="accent"style={{ border: '1px solid red', height: 120, width: 90 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">1</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 160, width: 90 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">2</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: 90 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">3</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 120, width: 90 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">4</FlexBox></Card></FlexBox></Card>
<div class="swan-card swan-card-bordered"><divclass="swan-display-flex swan-flex-box-align-items-flex-end swan-flex-box-flex-wrap-wrap swan-flex-box-flex-direction-row swan-flex-box-justify-content-center swan-flex-box-gap-3"style="height: 260px;"><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 120px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">1</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 160px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">2</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">3</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 120px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">4</div></div></div></div>
Flex Wrap
Use flexWrap
to control whether the items in the FlexBox should wrap to the next line or not.
The preview has been updated.
<Card bordered><FlexBoxstyle={{ height: 260, width: '100%' }}justifyContent="flex-start"alignItems="center"flexWrap="wrap"gap="3"><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: '30%' }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">1</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: '30%' }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">2</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: '30%' }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">3</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: '30%' }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">4</FlexBox></Card></FlexBox></Card>
<div class="swan-card swan-card-bordered"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-flex-wrap-wrap swan-flex-box-justify-content-flex-start swan-flex-box-gap-3"style="height: 260px; width: 100%;"><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 30%;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">1</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 30%;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">2</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 30%;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">3</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 30%;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">4</div></div></div></div>
Flex Direction
Use flexDirection
to control whether the items in the FlexBox are laid out in a row or column; this also switches the primary and secondary axis.
The preview has been updated.
<GridContainer><Row><Column span={6}><Card bordered><FlexBoxstyle={{ height: 360 }}justifyContent="center"alignItems="center"flexWrap="wrap"flexDirection="row"gap="3"><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: 120 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">1</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: 160 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">2</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: 120 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">3</FlexBox></Card></FlexBox></Card></Column><Column span={6}><Card bordered><FlexBoxstyle={{ height: 360 }}justifyContent="center"alignItems="center"flexWrap="wrap"flexDirection="column"gap="3"><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: 120 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">1</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: 160 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">2</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: 120 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">3</FlexBox></Card></FlexBox></Card></Column></Row></GridContainer>
<div class="swan-card swan-card-bordered"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-flex-wrap-wrap swan-flex-box-flex-direction-column swan-flex-box-justify-content-center swan-flex-box-gap-3"style="height: 360px;"><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 120px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">1</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 160px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">2</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 120px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">3</div></div></div></div>
Gap
Use gap
to put a gutter between the items in the FlexBox. This accepts one of the semantic or numeric space units as values. Note that this controls the inline gap property in the style attribute, so you cannot set the gap via style
.
The preview has been updated.
<Card bordered><FlexBoxstyle={{ height: 260 }}justifyContent="center"alignItems="center"flexWrap="wrap"flexDirection="row"gap="8"><Cardbgc="accent"style={{ border: '1px solid red', height: 120, width: 90 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">1</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 160, width: 90 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">2</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 90, width: 90 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">3</FlexBox></Card><Cardbgc="accent"style={{ border: '1px solid red', height: 120, width: 90 }}><FlexBoxstyle={{ height: '100%' }}justifyContent="center"alignItems="center">4</FlexBox></Card></FlexBox></Card>
<div class="swan-card swan-card-bordered"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-flex-wrap-wrap swan-flex-box-flex-direction-row swan-flex-box-justify-content-center swan-flex-box-gap-8"style="height: 260px;"><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 120px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">1</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 160px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">2</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 90px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">3</div></div><divclass="swan-card swan-bgc-accent"style="border: 1px solid red; height: 120px; width: 90px;"><divclass="swan-display-flex swan-flex-box-align-items-center swan-flex-box-justify-content-center"style="height: 100%;">4</div></div></div></div>