https://github.com/suitcss/utils-flex
CSS flexbox utilities
https://github.com/suitcss/utils-flex
flexbox suit-css
Last synced: over 1 year ago
JSON representation
CSS flexbox utilities
- Host: GitHub
- URL: https://github.com/suitcss/utils-flex
- Owner: suitcss
- License: mit
- Created: 2015-11-15T17:06:07.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-04-16T20:54:29.000Z (about 3 years ago)
- Last Synced: 2024-04-14T02:52:12.660Z (about 2 years ago)
- Topics: flexbox, suit-css
- Language: HTML
- Homepage: http://suitcss.github.io/utils-flex/test/
- Size: 216 KB
- Stars: 62
- Watchers: 7
- Forks: 12
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# SUIT CSS utilities: flex
[](https://travis-ci.org/suitcss/utils-flex)
SUIT CSS flexbox utilities
* Read more about [flexbox and its usage](http://www.w3.org/TR/css-flexbox/)
* Read more about [SUIT CSS's design principles](https://github.com/suitcss/suit/).
## Installation
* [npm](http://npmjs.org/): `npm install suitcss-utils-flex`
* Download: [zip](https://github.com/suitcss/utils-flex/releases/latest)
## Available classes
**`flex-container`**
* `u-flex` - Create a flex container
* `u-flexInline` - Create an inline flex container
**`flex-direction`**
* `u-flexRow` - Displays items in a row
* `u-flexRowReverse` - Reverses items in a row
* `u-flexCol` - Display items in a column
* `u-flexColReverse` - Reverses items in a column
**`flex-wrap`**
* `u-flexWrap` - Wrap items onto another line when space allows
* `u-flexNoWrap` - Force items to stay on one line
* `u-flexWrapReverse` - Wrap items and reverse direction
**`justify-content`**
* `u-flexJustifyStart` - Align items at the start of the main axis
* `u-flexJustifyEnd` - Align items at the end of the main axis
* `u-flexJustifyCenter` - Align items at the center of the main axis
* `u-flexJustifyBetween` - Items have space between each other on main axis
* `u-flexJustifyAround` - Items have space around each other on main axis
**`align-items`**
* `u-flexAlignItemsStretch` - Items stretch to fill container
* `u-flexAlignItemsStart` - Cross-start margin edge of the items is placed on the cross-start line
* `u-flexAlignItemsEnd` - Cross-end margin edge of the items is placed on the cross-end line
* `u-flexAlignItemsCenter` - Items are centered in the cross-axis
* `u-flexAlignItemsBaseline` - Items have their baselines aligned on the cross axis
**`align-content`**
* `u-flexAlignContentStart` - Items are packed to the start of the container
* `u-flexAlignContentEnd` - Items are packed to the end of the container
* `u-flexAlignContentCenter` - Items are packed to the centre of the container
* `u-flexAlignContentStretch` - Lines stretch to take up the remaining space
* `u-flexAlignContentBetween` - Lines evenly distributed; first and last lines at container edge
* `u-flexAlignContentAround` - Lines evenly distributed with equal space around each line
**`align-self`**
* `u-flexAlignSelfStart` - Aligns single item at cross axis start
* `u-flexAlignSelfEnd` - Aligns single item at cross axis end
* `u-flexAlignSelfCenter` - Aligns single item at cross axis centre-
* `u-flexAlignSelfStretch` - Stretches single item from cross start to end
* `u-flexAlignSelfAuto` - Uses the default set by `align-items`
**`order`**
* `u-flexOrderFirst` - Positions an item at the start
* `u-flexOrderLast` - Positions an item at the end
* `u-flexOrderNone` - Sets item order to the default of `0`
**`flex-grow`**
* `u-flexGrowX` - Specify how much the flex item will grow relatively
`X` can be any of the following numbers: `1`, `2`, `3`, `4`, `5`.
**`flex-shrink`**
* `u-flexShrinkX` - Specify how much the flex item will shrink relatively
`X` can be any of the following numbers: `0`, `1`, `2`, `3`, `4`, `5`.
**`flex-basis`**
Used to override other utilities and tweak [how space is
distributed](https://www.w3.org/TR/css-flexbox-1/images/rel-vs-abs-flex.svg).
* `u-flexBasisAuto`
* `u-flexBasis0`
**`flex` shorthand**
* `u-flexInitial` - Sizes the item based on the width/height properties
* `u-flexAuto` - Sizes the item based on the width/height properties, but makes
them fully flexible, so that they absorb any free space along the main axis.
* `u-flexNone` - Sizes the item according to the width/height properties, but
makes the flex item fully inflexible. Similar to initial, except that flex
items are not allowed to shrink, even in overflow situations.
**Aligning with `auto` margins**
* `u-flexExpand` - Expand all margins to fill remaining space
* `u-flexExpandTop` - Expand top margin to fill remaining space
* `u-flexExpandRight` - Expand right margin to fill remaining space
* `u-flexExpandBottom` - Expand bottom margin to fill remaining space
* `u-flexExpandLeft` - Expand left margin to fill remaining space
[Read more](https://medium.com/@samserif/flexbox-s-best-kept-secret-bd3d892826b6) about how this works.
### Plugins
All flex utilities can be limited to specific Media Query breakpoints.
* `u-sm-flexX` - To use at the smallest Media Query breakpoint.
* `u-md-flexX` - To use at the medium Media Query breakpoint.
* `u-lg-flexX` - To use at the largest Media Query breakpoint.
``` html
```
### Configuration
There are 3 Media Query breakpoints:
* `--sm-viewport`
* `--md-viewport`
* `--lg-viewport`
When using [postcss-custom-media](https://github.com/postcss/postcss-custom-media),
breakpoints can be configured using `@custom-media`. For example:
```css
@custom-media --sm-viewport (min-width:320px) and (max-width:640px);
@custom-media --md-viewport (min-width:640px) and (max-width:960px);
@custom-media --lg-viewport (min-width:960px);
```
## Usage
### Centring an element in its container
``` html
Some centred content
```
### Usage with [`Grid`](https://github.com/suitcss/components-grid)
Note: The `Grid` component already sets `display: flex` on the root element.
``` html
Content
Content
Content
```
### Usage with [`utils-size`](https://github.com/suitcss/utils-size)
``` html
Content
Content
Content
```
``` html
Content
Content
Content
```
Please refer to the README for [SUIT CSS utils](https://github.com/suitcss/utils/)
## Setting `flex-shrink` in IE10
In IE10 it is required to [explicitly set `flex-shrink` on flex
items](https://github.com/philipwalton/flexbugs#6-the-default-flex-value-has-changed),
or use the longhand `flex` declaration.
In prior versions of `utils-flex` this was set automatically on all flex items.
Due to issues with specificity this has been removed.
Should you need to apply the fix for IE10 then add a `u-flexShrink` class
manually:
```html
Content
Content
```
## Testing
Install [Node](http://nodejs.org) (comes with npm).
```
npm install
```
To generate a build:
```
npm run build
```
To lint code with [postcss-bem-linter](https://github.com/postcss/postcss-bem-linter) and [stylelint](http://stylelint.io/)
```
npm run lint
```
To generate the testing build.
```
npm run build-test
```
To watch the files for making changes to test:
```
npm run watch
```
Basic visual tests are in `test/index.html`.
## Browser support
Refer to the [caniuse](http://caniuse.com/) page for [flexbox](http://caniuse.com/#feat=flexbox).
* Google Chrome (latest)
* Opera (latest)
* Firefox 28+
* Safari 6.1+
* Internet Explorer 10+