@ninetynine/react-flex v3.0.0-canary-rc2
React Flex
This package provides a flex component and styles (scss and css).
Documentation is for master
Installation
You can install this packge with either npm or yarn.
npm i @ninetynine/react-flexAn example of how to install the package through NPM.
yarn add @ninetynine/react-flexAn example of how to install the package through Yarn.
Be sure to import the styles into your main style file or into your HTML, and import the component if you wish to use it within your project.
import "~@ninetynine/flex/dist/flex"An example of how to import into scss.
Usage
After importing the styles and component into your project you'll be able to use the <Flex /> component.
By default it will attempt to position all items inside it to the center of the container. It also has flex-wrap enabled, and flex-direction as row.
<Flex>
<p>I'm in the middle of the container</p>
</Flex>An example of how to pass content into Flex by using React children.
Passing content
Content can be passed by putting elements inside the tags, as shown above. Or you can take advantage of the content prop which accepts:
- a string
- a number
- a valid React element
<Flex
content={(
<p>Hello, world!</p>
)}
/>An example of how to pass content into Flex using the content prop.
Positioning all content
If you wish to change the positioning of all items within the flex component by using different combinations of the position prop or by passing in the positions as a boolean.
The following position are supported:
start, top, left, right, bottom, endtopwill pull content to the top of the containerleftwill pull content to the left of the containerrightwill pull content to the right of the containerbottomwill pull content to the bottom of the container
start and end combine multiple positions:
startcombinestopandleftendcombinesbottomandright
Different ways of using positions:
<Flex
position={'top left'}
// position={'start'}
/>An example of how to pass positions as a string.
<Flex
top left
// start
/>An example of how to pass positions as truthy props.
Positioning single content elements
There are a number of classes that can be added to a content element to change it's behaviour:
flex-shrinkaddsflex-shrinkflex-growaddsflex-growflex-fulladdsflex-growbut sets it higher thanflex-growso it will expand to fill contentflex-no-basisaddsflex-growand disablesflex-basisto make elements the same widthflex-basisaddsflex-basisfloat-leftpushes the element to the leftfloat-rightpushes the element to the right
Changing Flex behaviour
Flex comes with a few different options to change general behaviour, for example page will make Flex cover the whole screen (width: 100vw; height: 100vh;).
The following behaviours are supported:
page, padded, row, columnpageas already described makesFlexfill the whole pagepaddedadds a specified amount ofpaddingtopagerowmakes a few different behaviour changes:- Changes
flex-directiontorow - Removes outer margin on the first/last content
- Removes top and bottom margin on all content
- Disables
flex-wrap
- Changes
columnchangesflex-directiontocolumn
Adding custom styles and class names to Flex
Flex has the props style and className that directly alter the styles and classes of the containing element. These work the same way as they would on a standard HTML element.
It's worth noting that className will append classes to the already default Flex classes.
The scss style file makes use of three variables:
$gutter, $gutter-half, $gutter-doubleBy default $gutter is 20px, $gutter-half is half of $gutter- and $gutter-double is double of $gutter, so ideally you should only edit $gutter.
$gutter is used for the margins and paddings within the scss stylesheet. The css is compiled with the defaults.
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago