2009年,W3C提出了一種新的方案--Flex布局,可以簡便、完整、響應(yīng)式地實現(xiàn)各種頁面布局。目前已得到所有現(xiàn)在瀏覽器的支持。flex瀏覽器支持 一、Flex布局是什么?Flex是Flexible Box的縮寫,翻譯成中文就是“彈性盒子”,用來為盒裝模型提供最大的靈活性。任何一個容器都可以指定為Flex布局。 .box{ display: -webkit-flex; /*在webkit內(nèi)核的瀏覽器上使用要加前綴*/ display: flex; //將對象作為彈性伸縮盒顯示} 當然,行內(nèi)元素也可以使用Flex布局。
.box { display: flex || inline-flex; } 二、基本概念采用Flex布局的元素,被稱為Flex容器(flex container),簡稱“容器”。其所有子元素自動成為容器成員,成為Flex項目(Flex item),簡稱“項目”。 結(jié)構(gòu)示意圖
三、容器屬性
flex-direction屬性:決定主軸的方向(即項目的排列方向)
主軸的4個方向 flex-wrap屬性:定義換行情況
一條軸線排不下 .box{ flex-wrap: nowrap | wrap | wrap-reverse; }
flex-flow屬性:flex-direction和flex-wrap的簡寫,默認row nowrap
justify-content屬性:定義項目在主軸上的對齊方式。
.box { justify-content: start | end | flex-start | flex-end | center | left | right | space-between | space-around | space-evenly | stretch | safe | unsafe | baseline | first baseline | last baseline; }
居中對齊
兩端對齊
兩側(cè)間隔相等 align-items屬性:定義在交叉軸上的對齊方式
.box{ align-items: flex-start | flex-end | center | baseline | stretch; }
起點對齊
終點對齊
中點對齊
基線對齊
align-content屬性:定義多根軸線的對齊方式
起點對齊
終點對齊
中點對齊
軸線之間等間距
軸線兩側(cè)等間距
項目未設(shè)置高度時 有意思的是,當你不給項目設(shè)置高度但是給容器設(shè)置align-content不為stretch時,同一軸線上的項目的高度將等于項目中高度最高的項目。 四、項目的屬性
order屬性:定義項目的排列順序。
.item { order: <整數(shù)>; }flex-grow屬性:定義項目的放大比例
默認情況
若所有項目的flex-grow的數(shù)值都相同,則等分剩余空間 等分剩余空間 若果有一個項目flex-grow為2,其余都為1,則該項目占據(jù)剩余空間是其余的2倍 不等分占據(jù) flex-shrink屬性:定義項目的縮小比例
.item{ flex-shrink: <非負整數(shù)>; }如果一個項目設(shè)置flex-shrink為0;而其他項目都為1,則空間不足時,該項目不縮小。 設(shè)置flex-shrink為0的項目不縮小 如果所有項目都為0,則當空間不足時,項目撐破容器而溢出。 不縮小 如果設(shè)置項目的flex-shrink不為0的非負數(shù)效果同設(shè)置為1。 flex-basis屬性:定義在分配多余空間之前,項目占據(jù)的主軸空間。
注意設(shè)置的flex-basis是分配多余空間之前項目占據(jù)的主軸空間,如果空間不足則默認情況下該項目也會縮小。 設(shè)置flex-basis為350px,但空間充足 空間不足,項目縮小,小于設(shè)定值 flex屬性是flex-grow,flex-shrink和flex-basis的簡寫
.item{ flex: none | [<flex-grow><flex-shrink><flex-basis>]; }
align-self屬性:允許單個項目與其他項目有不一樣的對齊方式>默認值為auto,表示繼承父元素的align-items屬性,并可以覆蓋align-items屬性。 .item{ align-self: auto | flex-start | flex-end | center | baseline | stretch; } |
|