2009年,W3C提出了一種新的方案--Flex佈局,能夠簡便、完整、響應式地實現各類頁面佈局。目前已獲得全部如今瀏覽器的支持。web
Flex是Flexible Box的縮寫,翻譯成中文就是「彈性盒子」,用來爲盒裝模型提供最大的靈活性。任何一個容器均可以指定爲Flex佈局。瀏覽器
.box{ display: -webkit-flex; /*在webkit內核的瀏覽器上使用要加前綴*/ display: flex; //將對象做爲彈性伸縮盒顯示 }
固然,行內元素也能夠使用Flex佈局。佈局
.box { display: inline-flex; //將對象做爲內聯塊級彈性伸縮盒顯示 }
兼容性寫法
.box { display: flex || inline-flex; }
採用Flex佈局的元素,被稱爲Flex容器(flex container),簡稱「容器」。其全部子元素自動成爲容器成員,成爲Flex項目(Flex item),簡稱「項目」。flex
設置在容器上的屬性有6種。spa
.box { flex-direction: row | row-reverse | column | column-reverse; }
默認狀況下,項目都排列在一條軸線上,但有可能一條軸線排不下。翻譯
.box{ flex-wrap: nowrap | wrap | wrap-reverse; }
nowrap(默認):不換行;3d
wrap:換行,第一行在上方;code
wrap-reverse:換行,第一行在下方。orm
.box{ flex-flow: <flex-direction> || <flex-wrap>; }
對齊方式與軸的方向有關,本文中假設主軸從左到右。對象
.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; }
flex-start(默認值):左對齊;
flex-end:右對齊;
center:居中;
對齊方式與交叉軸的方向有關,假設交叉軸從下到上。
.box{ align-items: flex-start | flex-end | center | baseline | stretch; }
若是項目只有一根軸線,該屬性不起做用。
因此,容器必須設置flex-wrap:···;
.box{ align-content: flex-start | flex-end | center | space-between | space-around | stretch; }
有意思的是,當你不給項目設置高度可是給容器設置align-content不爲stretch時,同一軸線上的項目的高度將等於項目中高度最高的項目。
設置在項目上的屬性也有6個。
數值越小,排列越靠前,默認爲0,能夠是負值。
.item { order: <整數>; }
默認值爲0,即若是空間有剩餘,也不放大。
能夠是小數,按比例佔據剩餘空間。
.item{ flex-grow: <數字>; }
若全部項目的flex-grow的數值都相同,則等分剩餘空間
若果有一個項目flex-grow爲2,其他都爲1,則該項目佔據剩餘空間是其他的2倍
默認值都爲1,即若是空間不足將等比例縮小。
若是有一個項目的值爲0,其餘項目爲1,當空間不足時,該項目不縮小。
負值對該屬性無效,容器不該該設置flex-wrap。
.item{ flex-shrink: <非負整數>; }
若是一個項目設置flex-shrink爲0;而其餘項目都爲1,則空間不足時,該項目不縮小。
若是全部項目都爲0,則當空間不足時,項目撐破容器而溢出。
若是設置項目的flex-shrink不爲0的非負數效果同設置爲1。
默認值爲auto,瀏覽器根據此屬性檢查主軸是否有多餘空間。
.item{ flex-basis: <auto或者px>; }
注意設置的flex-basis是分配多餘空間以前項目佔據的主軸空間,若是空間不足則默認狀況下該項目也會縮小。
默認值爲0 1 auto,第一個屬性必須,後兩個屬性可選。
.item{ flex: none | [<flex-grow><flex-shrink><flex-basis>]; }
flex:auto;
代替 flex: 1 1 auto;
;flex: none;
代替 flex: 0 0 auto
;####align-self屬性:容許單個項目與其餘項目有不同的對齊方式 >默認值爲auto,表示繼承父元素的align-items屬性,並能夠覆蓋align-items屬性。
.item{
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
若是你以爲文章對你有所幫助,別忘了打賞哦!由於有你的支持,纔是我續寫下篇的動力和源泉!