Flexbox
Flexbox tips, tricks and properties overview.
Columns
.columns {
  display: flex;
  flex-wrap: wrap;
  max-width: 1500px;
  margin: auto;
  padding: 1em 2.5%;
}
.columns > div {
  flex-basis: 18.5em;
  flex-grow: 1;
}
Item Margin
Scenario, you have a few block level elements stacked in a container with height, and the last of these needs to be at the bottom of the container.
If there are only two elements, justify-content:space-between; would work. However, this solution is for three or more elements and all but the last are in their normal positions.
Use display:flexbox on the container element with flex-direction:column; to stack the flexbox item elements vertically. Then on the last element that is to align on the bottom, use margin-top:auto;. When using flex-direction:column;, margin:auto behaves vertically the same as it does horizontally.
Experiment with the flexbox-item-margin example in our sandbox.
Properties
Parent element (flex container)
Apply these properties to the parent element.
display
All direct child elements will be flex items.
display: flex;
display: inline-flex;
flex-direction
Sets the main-axis.
flex-direction: row; //default
flex-direction: row-reverse;
flex-direction: column;
flex-direction: column-reverse;
| A | B | C | 
| A | 
| B | 
| C | 
flex-wrap
flex-wrap: nowrap; //default
flex-wrap: wrap;
flex-wrap: wrap-reverse;
justify-content
justify-content: flex-start; //default
justify-content: flex-end;
justify-content: start;
justify-content: end;
justify-content: left;
justify-content: right;
justify-content: center;
justify-content: space-between;
justify-content: space-around;
justify-content: space-evenly;
align-items
align-items: stretch; //default
align-items: end;
align-items: center;
align-items: baseline;
...
align-content
For the cross-axis.
align-content: flex-start;
align-content: flex-end;
align-content: center;
align-content: stretch;
align-content: space-between;
align-content: space-around;
align-content: space-evenly;
Note: this property has no effect when only one line of flex items.
Child elements (flex items)
Apply these properties to the direct children of the parent element.
order
order: 2 //default = 0
flex-grow
flex-grow: 2 //default = 0
| 1 | 1 | 1 | 
For example, if one of the children has a value of 2, it will try to take up twice as much space as the others.
| 1 | 2 | 1 | 
flex-shrink
flex-shrink: 2 //default = 1
flex-basis
The default size of an element before the remaining space is distributed.
flex-basis: 25%; //default auto
NOTE: flex-grow: 1 or greater can override flex-basis.
flex
Shorthand for flex-grow, flex-shrink and flex-basis. flex-shrink and flex-basis are optional.
flex: 0 1 auto; //default
flex: 2 2 25%;
It is recommended that you use this shorthand property instead of the individual properties since it sets the other values intelligently.
align-self
Override parent align-items property for individual flex items.
align-self: auto;
align-self: flex-start;
align-self: flex-end;
align-self: center;
align-self: baseline;
align-self: stretch;
Resources
 
			