Flexbox elements for Solid JS.
<Flex row spaceBetween gap="32px">
<FlexItem selfStart />
<FlexItem shrink grow />
<Flex
selfStretch
column
spaceBetween
alignEnd
gap="16px"
grow={2}
>
<FlexItem selfStretch />
<FlexItem selfCenter />
<FlexItem grow />
</Flex>
</Flex>
You don't know CSS Flexbox? Read here!
2 components:
-
<Flex />
- creates a flex container.
- provides EVERY Flexbox property.
-
<FlexItem />
- creates a flexed item.
- provides Flexbox properties for items only.
3 ways to set properties:
- flags (
row
,start
,stretch
, ecc...) - classic properties (
display
,flexDirection
,justifyContent
, ecc...) - short version of classic properties (
justify
,align
,self
, ecc...)
# Install via NPM
npm i solid-flex
# or Yarn
yarn add solid-flex
Every Flexbox property can be set via one or more dedicated props.
This first set of props refers to "flex container" related properties. For this reason they are only available for the
component Flex
.
props | type | value |
---|---|---|
/ | / |
flex (default) |
inline |
boolean |
inline-flex |
display |
string |
any |
<>
<Flex /> // flex
<Flex inline /> // inline-flex
<Flex display="inline-flex" /> // inline-flex
</>
props | type | value |
---|---|---|
row |
boolean |
row (default) |
col or column
|
boolean |
column |
rowReverse |
boolean |
row-reverse |
colReverse or columnReverse
|
boolean |
column-reverse |
direction or flexDirection
|
string |
any |
<>
<Flex row /> // row
<Flex col /> // column
<Flex column /> // column
<Flex rowReverse /> // row-reverse
<Flex colReverse /> // column-reverse
<Flex columnReverse /> // column-reverse
<Flex direction="column-reverse" /> // column-reverse
<Flex flexDirection="column-reverse" /> // column-reverse
</>
The additional reverse
prop can be used to programmatically revert the specified direction:
prop | type |
---|---|
reverse |
boolean |
<>
<Flex row reverse /> // row-reverse
<Flex row reverse={true} /> // row-reverse
<Flex row reverse={false} /> // row
</>
props | type | value |
---|---|---|
nowrap |
boolean |
nowrap (default) |
wrap |
boolean |
wrap |
wrapReverse |
boolean |
wrap-reverse |
wrap or flexWrap
|
string |
any |
<>
<Flex wrap /> // wrap
<Flex nowrap /> // nowrap
<Flex wrapReverse /> // wrap-reverse
<Flex wrap={true} /> // wrap
<Flex wrap={false} /> // nowrap
<Flex wrap="wrap-reverse" /> // wrap-reverse
<Flex flexWrap="wrap-reverse" /> // wrap-reverse
</>
props | type | value |
---|---|---|
start |
boolean |
flex-start (default) |
end |
boolean |
flex-end |
center |
boolean |
center |
spaceBetween |
boolean |
space-between |
spaceAround |
boolean |
space-around |
spaceEvenly |
boolean |
space-evenly |
justify or justifyContent
|
string |
any |
<>
<Flex start /> // flex-start
<Flex end /> // flex-end
<Flex center /> // center
<Flex spaceBetween /> // space-between
<Flex spaceAround /> // space-around
<Flex spaceEvenly /> // space-evenly
<Flex justify="space-beetween" /> // space-beetween
<Flex justifyContent="space-beetween" /> // space-beetween
</>
props | type | value |
---|---|---|
alignStart |
boolean |
flex-start |
alignEnd |
boolean |
flex-end |
alignCenter |
boolean |
center (default) |
stretch or alignStretch
|
boolean |
stretch |
baseline or alignBaseline
|
boolean |
baseline |
align or alignItems
|
string |
any |
<>
<Flex alignStart /> // flex-start
<Flex alignEnd /> // flex-end
<Flex alignCenter /> // center
<Flex alignStretch /> // stretch
<Flex alignBaseline /> // baseline
<Flex align="flex-end" /> // flex-end
<Flex alignItems="flex-end" /> // flex-end
</>
props | type | value |
---|---|---|
contentStart |
boolean |
flex-start |
contentEnd |
boolean |
flex-end |
contentCenter |
boolean |
center |
contentStretch |
boolean |
stretch |
contentBaseline |
boolean |
baseline |
alignContent |
string |
any |
<>
<Flex contentStart /> // flex-start
<Flex contentEnd /> // flex-end
<Flex contentCenter /> // center
<Flex contentStretch /> // stretch
<Flex contentSpaceBetween /> // space-between
<Flex contentSpaceAround /> // space-around
<Flex alignContent="flex-end" /> // flex-end
</>
props | type | value |
---|---|---|
rowGap |
string |
any |
<>
<Flex rowGap="10px" /> // 10px
</>
props | type | value |
---|---|---|
colGap or columnGap
|
string |
any |
<>
<Flex colGap="10px" /> // 10px
<Flex columnGap="10px" /> // 10px
</>
props | type | value |
---|---|---|
gap |
string |
any |
<>
<Flex gap="10px" /> // 10px
<Flex gap="10px 20px" /> // 10px 20px
</>
The set of props below refers to "flex items" related properties. They are all available for both Flex
and FlexItem
components.
props | type | value |
---|---|---|
order |
number or string
|
any |
<>
<Flex order={3} /> // 3
<Flex order="3" /> // 3
</>
props | type | value |
---|---|---|
grow or flexGrow
|
booolean or number or string
|
/ |
<>
<Flex grow /> // 1
<Flex grow={true} /> // 1
<Flex grow={false} /> // 0
<Flex grow={3} /> // 3
<Flex grow="3" /> // 3
<Flex flexGrow={3} /> // 3
<Flex flexGrow="3" /> // 3
</>
props | type | value |
---|---|---|
shrink or flexShrink
|
booolean or number or string
|
/ |
<>
<Flex shrink /> // 1
<Flex shrink={true} /> // 1
<Flex shrink={false} /> // 0
<Flex shrink={3} /> // 3
<Flex shrink="3" /> // 3
<Flex flexShrink={3} /> // 3
<Flex flexShrink="3" /> // 3
</>
props | type | value |
---|---|---|
basis or flexBasis
|
string |
/ |
<>
<Flex basis="10px" /> // 10px
<Flex flexBasis="10px" /> // 10px
</>
props | type | value |
---|---|---|
selfStart |
boolean |
flex-start |
selfEnd |
boolean |
flex-end |
selfCenter |
boolean |
center |
selfStretch |
boolean |
stretch |
selfBaseline |
boolean |
baseline |
self or alignSelf
|
string |
/ |
<>
<Flex selfStart /> // flex-start
<Flex selfEnd /> // flex-end
<Flex selfCenter /> // center
<Flex selfStretch /> // stretch
<Flex selfBaseline /> // baseline
<Flex self="flex-end" /> // flex-end
<Flex alignSelf="flex-end" /> // flex-end
<>
By default, both Flex
and FlexItem
components renders a div
element with the specified flex properties.
Nevertheless, it is possible to change this behaviour via the as
prop:
props | type |
---|---|
as |
string or Component
|
Examples:
<>
<Flex as="input" />
<Flex as={MyCustomComp} />
</>
In addition, any additional prop passed to Flex
or FlexItem
will be drilled down to the render element or component.
<FlexItem id="myDiv" class="some-class" selfEnd grow={3} />
<FlexItem as="a" href="#foo" onClick={handleClick} grow />
const MyComp = (props) => (
<span style={{ fontSize: props.size }}>
{props.children}
</span>
)
return (
<FlexItem as={MyComp} size={18} selfEnd />
)
Use it to create a flexible container.
<Flex>Hello world!</Flex>
By default, it renders a div
element with the following CSS properties set:
display: flex;
align-items: center;
It provides all the properties listed above.
Use it to create a flexible item.
<FlexItem>Hello world!</FlexItem>
By default, it renders a div
element, but it does not set any CSS property.
Lastly, it provides only props related to order
, flex-grow
, flex-shrink
,
flex-basis
and align-self
properties.