simple-flexbox v2.3.3
Simple Flexbox
A simple way to make responsive layouts using Flexbox in React. Typescript supported.
Installation
npm install simple-flexbox or yarn add simple-flexbox
Examples
Look at a real UI created with simple-flexbox here: https://llorentegerman.github.io/react-admin-dashboard/ and read the code here: https://github.com/llorentegerman/react-admin-dashboard.
See examples in codesandbox.
There are two main components, Column and Row.
<Row vertical='center' horizontal='spaced'>
<Column vertical='end'>
<span> Content 1 </span>
<span> Content 2 </span>
</Column>
<Column>
<span> Content 3 </span>
<span> Content 4 </span>
<span> Content 5 </span>
</Column>
</Row>Row props
| property | accepted values | description |
|---|---|---|
| reverse | true or false | |
| vertical | 'start', 'center', 'end', 'stretch', 'baseline' | at rows, vertical and alignItems are the same |
| horizontal | 'start', 'flex-start', 'center', 'end', 'flex-end', 'spaced', 'space-between', 'around', 'space-around', 'space-evenly' | at rows, horizontal and justifyContent are the same |
| justifyContent | 'start', 'flex-start', 'center', 'end', 'flex-end', 'spaced', 'space-between', 'around', 'space-around', 'space-evenly' | at rows, horizontal and justifyContent are the same |
| alignItems | 'start', 'center', 'end', 'stretch', 'baseline' | at rows, vertical and alignItems are the same |
| alignSelf | 'start', 'center', 'end', 'stretch', 'baseline' | other alignment for the cross (vertical) axis |
| alignContent | 'start', 'flex-start', 'center', 'end', 'flex-end', 'spaced', 'space-between', 'around', 'space-around', 'stretch' | other alignment for the cross (vertical) axis |
| flex | string | shorthand for grow, shrink and basis |
| flexGrow | number | flex-grow |
| flexShrink | number | flex-shrink |
| flexBasis | string | flex-basis |
| wrap | true or false | default: false |
| wrapReverse | true or false | default: false |
| any other property | any | i.e.: style={{bakcgroundColor: 'red'}} |
| breakpoints | array of objects | different styles are applied depending on window.innerWidth, see Breakpoints section below |
| element | 'article', 'aside', 'div', 'figure', 'footer', 'form', 'header', 'main', 'nav', 'section' | Defines to which html tag the styles will be applied. Default: div |
| componentRef | createRef() or callback ref | reference |
| children | required |
Column props
| property | accepted values | description |
|---|---|---|
| reverse | true or false | |
| horizontal | 'start', 'center', 'end', 'stretch', 'baseline' | at column, horizontal and alignItems are the same |
| vertical | 'start', 'flex-start', 'center', 'end', 'flex-end', 'spaced', 'space-between', 'around', 'space-around', 'space-evenly' | at column, vertical and justifyContent are the same |
| justifyContent | 'start', 'flex-start', 'center', 'end', 'flex-end', 'spaced', 'space-between', 'around', 'space-around', 'space-evenly' | at column, vertical and justifyContent are the same |
| alignItems | 'start', 'center', 'end', 'stretch', 'baseline' | at column, horizontal and alignItems are the same |
| alignSelf | 'start', 'center', 'end', 'stretch', 'baseline' | other alignment for the cross (horizontal) axis |
| alignContent | 'start', 'flex-start', 'center', 'end', 'flex-end', 'spaced', 'space-between', 'around', 'space-around', 'stretch' | other alignment for the cross (horizontal) axis |
| flex | string | shorthand for grow, shrink and basis |
| flexGrow | number | flex-grow |
| flexShrink | number | flex-shrink |
| flexBasis | string | flex-basis |
| wrap | true or false | default: false |
| wrapReverse | true or false | default: false |
| any other property | any | i.e.: style={{bakcgroundColor: 'red'}} |
| breakpoints | array of objects | different styles are applied depending on window.innerWidth, see Breakpoints section below |
| element | 'article', 'aside', 'div', 'figure', 'footer', 'form', 'header', 'main', 'nav', 'section' | Defines to which html tag the styles will be applied. Default: div |
| componentRef | createRef() or callback ref | reference |
| children | required |
Breakpoints
The breakpoints property allows you to apply styles depending on window.innerWidth.
You must indicate the maximum size for which the styles will be applied, that means that the styles will be applied as long as windows.width <= size, where size is a number.
Breakpoints property must have this structure:
{
size1: { styles1 },
size2: { styles2 },
...
sizeN: { stylesN }
}you can also use a flexDirection value such as column, column-reverse, row, row-reverse, or a className, in this case, the name of the class cannot be any of the 4 possible values of flexDirection, so, className cannot be any of these column, column-reverse, row or row-reverse.
{
size1: 'flexDirection value, for example: column, column-reverse, row or row-reverse',
size2: 'any className except column, column-reverse, row, row-reverse',
...
sizeN: 'column, column-reverse, row, row-reverse or className'
}for example:
<Column breakpoints={{
850: { flexDirection: 'row', backgroundColor: 'green' },
600: 'row-reverse'
}}>
<b>Hello</b>
<span>world!</span>
</Column>Breakpoints styles are applied cumulatively, for example, for the Column declared above, these will be the styles, depending on window.innerWidth:
window.innerWidth > 850 --> styles = {}
600 < window.innerWidth <= 850 --> styles = { flexDirection: 'row', backgroundColor: 'green' }
window.innerWidth <= 600 --> styles = { flexDirection: 'row-reverse', backgroundColor: 'green' }
You can see this breakpoints examples in codesandbox.
License
This software is released under the MIT License.
Author
4 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago