水平居中很容易實現,但是一般垂直居中好像不是很好實現,一般我們都會用position、left等等進行定位;但是flex很好的解決了這個問題
Flex就是"彈性布局",現在應用很多,比如小程序推薦布局方式就是彈性布局;
被設置了flex的元素就是容器,該元素下的所有子元素都是該容器的項目

容器默認存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。
主軸的開始位置(與邊框的交叉點)叫做main start,結束位置叫做main end;
交叉軸的開始位置叫做cross start,結束位置叫做cross end。
項目默認沿主軸排列。單個項目占據的主軸空間叫做main size,占據的交叉軸空間叫做cross size
容器屬性:
flex-direction: 項目的排列方向
flex-direction: row //從下到上排列 flex-direction: row-reverse //從上到下排列 flex-direction: column //從左到右排列 flex-direction: column-reverse //從右到左排列
flex-wrap:換行
flex-wrap:nowrap //不換行 flex-wrap:wrap //換行,第一行在上方 flex-wrap:wrap-reverse //換行,第一行在下方
flex-flow: 是flex-direction和flex-wrap的簡寫
justify-content:項目在主軸上(水平方向上)的對齊方式
justify-content:flex-start //(默認值):左對齊 justify-content:flex-end //右對齊 justify-content:center //居中 justify-content:space-between. //兩端對齊,項目之間的間隔都相等。 justify-content:space-around //每個項目兩側的間隔相等。所以,項目之間的間隔比項目與邊框的間隔大一倍。
align-items:項目在交叉軸上(垂直方向上)如何對齊
align-items:flex-start //交叉軸的起點對齊。 align-items:flex-end //交叉軸的終點對齊。 align-items:center //交叉軸的中點對齊。 align-items:baseline //項目的第一行文字的基線對齊。 align-items:stretch //(默認值):如果項目未設置高度或設為auto,將占滿整個容器的高度。
設置在項目上的屬性
order :項目的排列順序。數值越小,排列越靠前,默認為0
order: <integer>;
flex-grow:項目的放大比例,默認為0,即不放大
flex-grow: <integer>;
flex-shrink:項目的縮小比例,默認為1,即空間不夠就縮小
flex-shrink: <integer>;
flex-basis:在分配多余空間之前,項目占據的主軸空間的大小
flex-basis: <length> | auto; /* default auto */
flex: flex-grow, flex-shrink 和 flex-basis的簡寫,默認值為0 1 auto。后兩個屬性可選。
align-self: 單個項目有與其他項目不一樣的對齊方式,可覆蓋align-items屬性。默認值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同於stretch
align-self: auto | flex-start | flex-end | center | baseline | stretch;
作者:super靜_jingjing
鏈接:https://www.jianshu.com/p/2bcac1b556d9
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。