FLEXB X
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2874544/original_2db55ab3-3fe8-4a5b-b96f-0e3eaeb35843_BlackBoxCAD.png)
The Problem With The Old Box Model
.col {
width: 33.33%
}
100%
33.33%
33.33%
33.33%
.col {
width: 33.33%
}
.col {
width: 33.33%
}
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2874395/Screenshot_from_2016-07-27_09_41_37.png)
USED FLEXBOX
@mixin flexbox {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
display: box;
}
.flex-container {
@include flexbox;
__________________;
}
.flex-item {
_____________;
}
<ul class="flex-container">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item">4</li>
</ul>
WHEN TO USE FLEXBOX
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2874417/Screenshot_from_2016-07-27_09_56_44.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2874419/Screenshot_from_2016-07-27_09_57_52.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2874425/Screenshot_from_2016-07-27_09_59_30.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2874447/Screenshot_from_2016-07-27_10_14_17.png)
Scaling
Vertical alignment
Horizontal alignment
Ordering
Browser Support
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2874987/Screenshot_from_2016-07-27_14_50_56.png)
Flexbox properties
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2872057/flexbox-main.png)
.flex-container { display: -webkit-box; /* 2009 - Chrome, Safari , iOS Safari */ display: -moz-box; /* 2009 - Firefox */ display: -ms-flexbox; /* early 2012 - IE 10 */ display: -webkit-flex; /* 2012 - Chrome */ display: flex; /* 2012 - Opera 12.1, Firefox 22+, Android 4.4+, iOS 7.1+ */ display: box; /* Android 2.1+, iOS 3.2+ */ } |
Flex container
.flex-item { -webkit-box-ordinal-group: 2; /* 2009 - Chrome, Safari , iOS Safari */ -moz-box-ordinal-group: 2; /* 2009 - Firefox */ -ms-flex-order: 2; /* early 2012 - IE 10 */ -webkit-order: 2; /* 2012 - Chrome */ order: 2; /* 2012 - Opera 12.1, Firefox 22+ */ } |
Flex item
css processor's
@mixin
@mixin flexbox {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
display: box;
}
.flex-container {
@include flexbox;
}
@mixin orders($value) {
-webkit-box-ordinal-group: $value;
-moz-box-ordinal-group: $value;
-ms-flex-order: $value;
-webkit-order: $value;
order: $value;
}
.order {
@include orders(2px);
}
/* Compiles to this (with autoprefixer set to support last 2 versions of all browsers) */
.scss
.flex-container {
display: flex;
}
.css
.flex-container {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
Flex Container properties
-
flex-direction
-
flex-wrap
-
flex-flow
-
justify-content
-
align-items
-
align-content
flex-direction
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2863376/flexdirec.png)
Syntax
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2871935/fdrow.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2871937/fdrowre.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2871938/fdcol.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2871943/fdcolre.png)
flex-direction: row;
flex-direction: row-reverse;
flex-direction: column;
flex-direction: column-reverse;
@mixin flexbox {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
display: box;
}
.flex-container {
@include flexbox;
__________________;
}
.flexdirection {
flex-direction: row |row-reverse |column |column-reverse ;
}
.flex-item {
_____________;
}
<ul class="flex-container flexdirection">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item">3</li>
<li class="flex-item">4</li>
<li class="flex-item">5</li>
</ul>
flex-wrap
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2863470/Screenshot_from_2016-07-22_16_15_42.png)
Syntax
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2863478/Screenshot_from_2016-07-22_16_21_25.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2863486/Screenshot_from_2016-07-22_16_24_20.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2863491/Screenshot_from_2016-07-22_16_27_14.png)
flex-wrap: nowrap;
flex-wrap: wrap;
flex-wrap: wrap-reverse;
@mixin flexbox {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
display: box;
}
.flex-container {
@include flexbox;
__________________;
}
.flexwrap {
flex-wrap: nowrap |wrap |wrap-reverse ;
}
.flex-item {
_____________;
}
<ul class="flex-container flexwrap">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item">3</li>
<li class="flex-item">4</li>
<li class="flex-item">5</li>
</ul>
Flex flow
Syntax
flex-flow: < flex-direction > || < flex-wrap >
flex-flow: row nowrap;
flex-flow: column wrap;
flex-flow: column-reverse wrap-reverse;
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2871969/Screenshot_from_2016-07-26_13_37_42.png)
flex-flow: row wrap;
flex-flow: row-reverse wrap;
Justify content
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2874776/Screenshot_from_2016-07-27_13_00_12.png)
Syntax
justify-content: flex-start;
justify-content: flex-end;
justify-content: center;
justify-content: space-between;
justify-content: space-around;
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2874795/Screenshot_from_2016-07-27_13_12_43.png)
@mixin flexbox {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
display: box;
}
.flex-container {
@include flexbox;
__________________;
}
.justifycontent {
justify-content: flex-start | flex-end | center | space-between | space-around ;
}
.flex-item {
_____________;
}
<ul class="flex-container justifycontent">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item">3</li>
<li class="flex-item">4</li>
<li class="flex-item">5</li>
</ul>
Align items
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2863587/Screenshot_from_2016-07-22_17_17_30.png)
Syntax
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2868724/Screenshot_from_2016-07-25_09_15_10.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2868726/Screenshot_from_2016-07-25_09_15_57.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2868731/Screenshot_from_2016-07-25_09_16_49.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2868749/Screenshot_from_2016-07-25_09_23_15.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2868751/Screenshot_from_2016-07-25_09_23_53.png)
align-items: flex-start;
align-items: flex-end;
align-items: center;
align-items: baseline;
align-items: stretch;
@mixin flexbox {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
display: box;
}
.flex-container {
@include flexbox;
__________________;
}
.alignitems {
aling-items: flex-start | flex-end | center | baseline | stretch ;}
.flex-item {
_____________;
}
<ul class="flex-container alignitems">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item">3</li>
<li class="flex-item">4</li>
<li class="flex-item">5</li>
</ul>
Align content
Syntax
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2868772/Screenshot_from_2016-07-25_09_36_51.png)
align-content: flex-start;
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2868773/Screenshot_from_2016-07-25_09_37_31.png)
align-content: flex-end;
align-content: center;
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2868775/Screenshot_from_2016-07-25_09_38_58.png)
align-content: space-between;
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2868779/Screenshot_from_2016-07-25_09_39_59.png)
align-content: space-around;
align-content: stretch;
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2868781/Screenshot_from_2016-07-25_09_41_04.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2874863/Screenshot_from_2016-07-27_13_54_58.png)
@mixin flexbox {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
display: box;
}
.flex-container {
@include flexbox;
__________________;
}
.aligncontent {
align-content: flex-start | flex-end | center | space-between | space-around | stretch ;
}
.flex-item {
_____________;
}
<ul class="flex-container aligncontent">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item">3</li>
<li class="flex-item">4</li>
<li class="flex-item">5</li>
</ul>
Flex items properties
- order
- align-self
- flex-grow
- flex-shrink
- flex-basis
Order
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2863630/Screenshot_from_2016-07-22_17_46_22.png)
Syntax
order: <number> ;
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2874496/Screenshot_from_2016-07-27_10_42_05.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2874499/Screenshot_from_2016-07-27_10_43_14.png)
@mixin flexbox {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
display: box;
}
.flex-container {
@include flexbox;
__________________ ;
.flextext {________ ; }
}
@media only screen and(max-width: 320px) {
.flex-container {
flex-wrap: wrap;
.fleximage {
order: 1;
}
}
}
@media only screen and(max-width: 1024px) {
.flex-container {
flex-wrap: wrap;
.fleximage {
order: 2;
}
}
}
Align self
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2868839/Screenshot_from_2016-07-25_10_27_38.png)
Syntax
align-self: flex-start ;
align-self: flex-end ;
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2871695/asfstart.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2871697/asfend.png)
align-self: center ;
align-self: baseline ;
align-self: stretch ;
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2871699/asfcenter.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2871700/asbaseline.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2871701/asstretch.png)
Flex grow
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2871719/Screenshot_from_2016-07-26_10_35_56.png)
flex-grow: 1 ;
flex-grow: 1 ;
flex-grow: 1 ;
flex-grow: 1 ;
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2872217/Screenshot_from_2016-07-26_16_25_17.png)
flex-grow: 1;
flex-grow: 1;
flex-grow: 1;
flex-grow: 1;
flex-grow: 2;
@mixin flexbox {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
display: box;
}
.flex-container {
@include flexbox;
__________________;
}
.value1 {
flex-grow: 1 ;
}
.value2 {
flex-grow: 2 ;
}
.
.flex-item {
_____________;
}
<ul class="flex-container">
<li class="flex-item value1">1</li>
<li class="flex-item value1">2</li>
<li class="flex-item value2">3</li>
<li class="flex-item value1">4</li>
<li class="flex-item value1">5</li>
</ul>
Flex shrink
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2872315/Screenshot_from_2016-07-26_17_33_09.png)
flex-shrink: 1 ;
flex-shrink: 1 ;
flex-shrink: 0 ;
@mixin flexbox {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
display: box;
}
.flex-container {
@include flexbox;
__________________;
}
.flexshrink {
flex-shrink: 0 ;
}
.flex-item {
flex-shrink: 1 ;
_____________;
}
<ul class="flex-container">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item flexshrink">3</li>
<li class="flex-item">4</li>
<li class="flex-item">5</li>
<li class="flex-item">6</li>
<li class="flex-item">7</li>
<li class="flex-item">8</li>
</ul>
Flex basis
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2872317/Screenshot_from_2016-07-26_17_34_36.png)
flex-basis: auto ;
flex-basis: auto ;
flex-basis: 350px ;
@mixin flexbox {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
display: box;
}
.flex-container {
@include flexbox;
__________________;
}
.flexbasis {
flex-basis: 350px ;
}
.flex-item {
flex-basis: auto ;
_____________;
}
<ul class="flex-container">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item">3</li>
<li class="flex-item flexbasis">4</li>
<li class="flex-item">5</li>
</ul>
Flex
flex: 2 2 0% ;
flex-grow
flex-shrink
flex-basis
![](https://s3.amazonaws.com/media-p.slid.es/uploads/537536/images/2871750/CAxAo5aUkAAAjB2.png)
flexible layout
By sasiporn
flexible layout
- 387