在傳統的布局方案中,是基于盒模型的,一般使用display+position+float屬性,對于一些特殊的布局中,如水平垂直居中就比較麻煩,CSS居中可參考我之前的一篇文章CSS居中
1、Flex布局基本概念
- Flex 是 Flexible Box 的縮寫,意為"彈性布局",用來為盒狀模型提供最大的靈活性。
若要設置一個容器為flex布局只需要在其樣式加上display: flex
就行
flex布局
這里主要注意main axis(水平主軸)和垂直的側軸(cross axis),中間的三個為flex container容器內的子元素。
2 、容器的屬性
-
flex-direction: row | row-reverse | column | column-reverse
; // 決定主軸的方向 -
flex-wrap: nowrap | wrap | wrap-reverse
//換行 - flex-flow //上面兩者屬性綜合
-
justify-content: flex-start | flex-end | center | space-between | space-around
//項目在主軸上的對齊方式 -
align-items: flex-start | flex-end | center | baseline | stretch;
//定義項目在側軸上如何對齊。 - align-content //定義了多根軸線的對齊方式。如果項目只有一根軸線,該屬性不起作用。
3、項目的屬性
-
order: <integer>
//定義項目的排列順序。數值越小,排列越靠前,默認為0 -
flex-grow: <number>
//定義項目的放大比例,默認為0 -
flex-shrink: /* default 1 */
//flex-shrink屬性定義了項目的縮小比例,默認為1,即如果空間不足,該項目將縮小 -
flex-basis :/* default auto */
//定義了在分配多余空間之前,項目占據的主軸空間(main size) - flex //flex-grow, flex-shrink 和 flex-basis的簡寫
- align-self //允許單個項目有與其他項目不一樣的對齊方式,可覆蓋align-items屬性
參考資料:
http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
http://www.ruanyifeng.com/blog/2015/07/flex-examples.html
MDN Flex