Package Exports
- suitcss-utils-flex
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (suitcss-utils-flex) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
SUIT CSS utilities: flex
SUIT CSS flexbox utilities
- Read more about flexbox and its usage
- Read more about SUIT CSS's design principles.
Installation
Available classes
flex-container
u-flex
- Create a flex containeru-flexInline
- Create an inline flex container
flex-direction
u-flexRow
- Displays items in a rowu-flexRowReverse
- Reverses items in a rowu-flexCol
- Display items in a columnu-flexColReverse
- Reverses items in a column
flex-wrap
u-flexWrap
- Wrap items onto another line when space allowsu-flexNoWrap
- Force items to stay on one lineu-flexWrapReverse
- Wrap items and reverse direction
justify-content
u-flexJustifyStart
- Align items at the start of the main axisu-flexJustifyEnd
- Align items at the end of the main axisu-flexJustifyCenter
- Align items at the center of the main axisu-flexJustifyBetween
- Items have space between each other on main axisu-flexJustifyAround
- Items have space around each other on main axis
align-items
u-flexAlignItemsStretch
- Items stretch to fill containeru-flexAlignItemsStart
- Cross-start margin edge of the items is placed on the cross-start lineu-flexAlignItemsEnd
- Cross-end margin edge of the items is placed on the cross-end lineu-flexAlignItemsCenter
- Items are centered in the cross-axisu-flexAlignItemsBaseline
- Items have their baselines aligned on the cross axis
align-content
u-flexAlignContentStart
- Items are packed to the start of the containeru-flexAlignContentEnd
- Items are packed to the end of the containeru-flexAlignContentCenter
- Items are packed to the centre of the containeru-flexAlignContentStretch
- Lines stretch to take up the remaining spaceu-flexAlignContentBetween
- Lines evenly distributed; first and last lines at container edgeu-flexAlignContentAround
- Lines evenly distributed with equal space around each line
align-self
u-flexAlignSelfStart
- Aligns single item at cross axis startu-flexAlignSelfEnd
- Aligns single item at cross axis endu-flexAlignSelfCenter
- Aligns single item at cross axis centre-u-flexAlignSelfStretch
- Stretches single item from cross start to endu-flexAlignSelfAuto
- Uses the default set byalign-items
order
u-flexOrderFirst
- Positions an item at the startu-flexOrderLast
- Positions an item at the endu-flexOrderNone
- Sets item order to the default of0
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.
u-flexBasisAuto
u-flexBasis0
flex
shorthand
u-flexInitial
- Sizes the item based on the width/height propertiesu-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 spaceu-flexExpandTop
- Expand top margin to fill remaining spaceu-flexExpandRight
- Expand right margin to fill remaining spaceu-flexExpandBottom
- Expand bottom margin to fill remaining spaceu-flexExpandLeft
- Expand left margin to fill remaining space
Read more 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.
<div class="u-md-flex u-md-flexWrap">
<!-- flex items -->
</div>
Configuration
There are 3 Media Query breakpoints:
--sm-viewport
--md-viewport
--lg-viewport
When using postcss-custom-media,
breakpoints can be configured using @custom-media
. For example:
@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
<div class="u-flex u-flexAlignItemsCenter u-flexJustifyCenter">
<p>Some centred content</p>
</div>
Usage with Grid
Note: The Grid
component already sets display: flex
on the root element.
<div class="Grid Grid--alignBottom">
<div class="Grid-cell u-size1of3 u-md-flexAlignSelfCenter">Content</div>
<div class="Grid-cell u-size1of3">Content</div>
<div class="Grid-cell u-size1of3">Content</div>
</div>
Usage with utils-size
<div class="u-flex u-flexJustifyEnd">
<div class="u-size4of12">Content</div>
<div class="u-size2of12">Content</div>
<div>Content</div>
</div>
<div class="u-flex u-flexAlignItemsCenter">
<div class="u-size1of4">Content</div>
<div class="u-size1of4">Content</div>
<div class="u-sizeFill">Content</div>
</div>
Please refer to the README for SUIT CSS utils
Setting flex-shrink
in IE10
In IE10 it is required to explicitly set flex-shrink
on flex
items,
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:
<div class="u-flex u-flexNoWrap">
<div class="FlexItem u-flexShrink1">Content</div>
<div class="FlexItem u-flexShrink1">Content</div>
</div>
Testing
Install Node (comes with npm).
npm install
To generate a build:
npm run build
To lint code with postcss-bem-linter and stylelint
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 page for flexbox.
- Google Chrome (latest)
- Opera (latest)
- Firefox 28+
- Safari 6.1+
- Internet Explorer 10+