對 Flex 布局的理解及其使用場景
對 Flex 布局的理解及其使用場景
Flex 是 FlexibleBox 的縮寫,意為"彈性布局",用來為盒狀模型提供最大的靈活性。任何一個容器都可以指定為 Flex 布局。行內(nèi)元素也可以使用 Flex 布局。注意,設(shè)為 Flex 布局以后,子元素的 float、clear 和 vertical-align 屬性將失效。采用 Flex 布局的元素,稱為 Flex 容器(flex container),簡稱"容器"。它的所有子元素自動成為容器成員,稱為 Flex 項目(flex item),簡稱"項目"。容器默認存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis),項目默認沿水平主軸排列。
以下 6 個屬性設(shè)置在容器上:
flex-direction 屬性決定主軸的方向(即項目的排列方向)。
flex-wrap 屬性定義,如果一條軸線排不下,如何換行。
flex-flow 屬性是 flex-direction 屬性和 flex-wrap 屬性的簡寫形式,默認值為 row nowrap。
justify-content 屬性定義了項目在主軸上的對齊方式。
align-items 屬性定義項目在交叉軸上如何對齊。
align-content 屬性定義了多根軸線的對齊方式。如果項目只有一根軸線,該屬性不起作用。
以下 6 個屬性設(shè)置在項目上:
order 屬性定義項目的排列順序。數(shù)值越小,排列越靠前,默認為 0。
flex-grow 屬性定義項目的放大比例,默認為 0,即如果存在剩余空間,也不放大。
flex-shrink 屬性定義了項目的縮小比例,默認為 1,即如果空間不足,該項目將縮小。
flex-basis 屬性定義了在分配多余空間之前,項目占據(jù)的主軸空間。瀏覽器根據(jù)這個屬性,計算主軸是否有多余空間。它的默認值為 auto,即項目的本來大小。
flex 屬性是 flex-grow,flex-shrink 和 flex-basis 的簡寫,默認值為 0 1 auto。
align-self 屬性允許單個項目有與其他項目不一樣的對齊方式,可覆蓋 align-items 屬性。默認值為 auto,表示繼承父元素的 align-items 屬性,如果沒有父元素,則等同于 stretch。
簡單來說: flex 布局是 CSS3 新增的一種布局方式,可以通過將一個元素的 display 屬性值設(shè)置為 flex 從而使它成為一個 flex 容器,它的所有子元素都會成為它的項目。一個容器默認有兩條軸:一個是水平的主軸,一個是與主軸垂直的交叉軸??梢允褂?flex-direction 來指定主軸的方向??梢允褂?justify-content 來指定元素在主軸上的排列方式,使用 align-items 來指定元素在交叉軸上的排列方式。還可以使用 flex-wrap 來規(guī)定當一行排列不下時的換行方式。對于容器中的項目,可以使用 order 屬性來指定項目的排列順序,還可以使用 flex-grow 來指定當排列空間有剩余的時候,項目的放大比例,還可以使用 flex-shrink 來指定當排列空間不足時,項目的縮小比例。