display: flex;
將對象做爲彈性伸縮盒展現,用於塊級元素display: inline-flex;
將對象做爲彈性伸縮盒展現,用於行內元素注意兼容問題:javascript
-webkit
-ms
,IE10瀏覽器中容器定義成彈性伸縮盒時,需使用display: -ms-flexbox
示例的dom結構:java
<div class="box"> <!--容器--> <div class="item">1</div> <!--子項--> <div class="item">2</div> <div class="item">3</div> </div>複製代碼
基礎樣式設計:git
.box {
width: 200px;
height: 200px;
background-color: #58a;
}
.item {
width: 50px;
height: 50px;
margin: 2px;
background-color: #fb3;
}複製代碼
一、flex-directiongithub
用於指定Flex主軸的方向,繼而決定 Flex子項在Flex容器中的位置web
取值:row | row-reverse | column | column-reverse瀏覽器
flex-direction
四種取值的效果圖以下:dom
二、flex-wrap佈局
用於指定Flex子項是否換行flex
取值:nowrap | wrap | wrap-reverseflexbox
flex-wrap
三種取值的效果圖以下:
從示例圖中不難發現,換行之後兩行之間產生了很大的間距,這個問題,在後面介紹的 align-content
屬性中能夠獲得很好的解決。
三、flex-flow
複合屬性,是flex-direction
和 flex-wrap
的簡寫屬性,是用於指定Flex子項的排列方式
四、justify-content
用於指定主軸(水平方向)上Flex子項的對齊方式
取值:flex-start | flex-end | center | space-between | space-around
flex-start
center
justify-content
的前三種取值的效果圖以下:
justify-content
取值爲 space-between
的效果圖以下(注意特殊狀況下效果等同於flex-start):
justify-content
取值爲 space-around
的效果圖以下(注意特殊狀況下效果等同於center):
五、align-items
用於指定側軸(垂直方向)上Flex子項的對齊方式
取值:stretch | flex-start | flex-end | center | baseline
flex-start
align-items
取值爲 stretch
的效果圖以下:
align-items
取值爲 flex-start flex-end center
的效果圖以下:
align-items
取值爲 baseline
的效果圖以下:
六、align-content
該屬性只做用於多行的狀況下,用於多行的對齊方式
取值:stretch | flex-start | flex-end | center | space-between | space-around
flex-start
center
再次強調:該屬性只做用於多行的狀況,在只有一行的Flex容器上無效,另外該屬性能夠很好的處理,換行之後相鄰行之間產生的間距。
align-content
各個取值的效果圖以下:
一、order
該屬性用來指定Flex子項的排列順序,數值越小,越靠前,能夠爲負數
取值:數值,默認值爲0
二、flex-grow
用來指定Flex子項的擴展比例,不能夠爲負數,Flex容器會根據Flex子項設置的擴展比例做爲比率來分配剩餘空間
取值:數值,默認值爲0,表示即便存在剩餘空間,Flex子項也不會擴展
以下圖中,按照1:3分配剩餘空間:
三、flex-shrink
用來指定Flex子項的收縮比例,不能夠爲負數,Flex容器會根據Flex子項設置的收縮比例做爲比率來收縮各個Flex子項
取值:數值,默認值爲1,表示全部子項在剩餘空間爲負數時,等比例收縮
注意:flex-shrink
只能在不換行的狀況下使用
以下圖中,按照1:3收縮:
四、flex-basis
用來指定Flex子項的佔據的空間,不能夠爲負數
取值:auto | length | percentage | content
以下圖中,爲Item設置 flex-basis: 50%;
,在按照1:3分配剩餘空間:
容器寬度爲200px,Item1原始寬度爲50px,設置 flex-basis: 50%;
後寬度變成100px,擴展後寬度爲110.5px;而Item2原始寬度爲50px,擴展後爲81.5px,比例正好是1:3
注意:
設置flex-grow
進行分配剩餘空間,或者使用flex-shrink
進行收縮都是在flex-basis的基礎上進行的;
當flex-basis
的值以及width(或者height)的值均爲非auto時,
flex-basis
的值以及width(或者height)的值,此時以flex-basis
與width(或者height)中值大的爲準 ,可是,若是子項設置了overflow: hidden;
或者overflow: auto;
,此時以flex-basis
值爲準;flex-basis
的值以及width(或者height)的值,此時以flex-basis
值爲準;flex-basis
的值,大於width(或者height)的值,此時以flex-basis
值爲準;flex-basis
的值,小於width(或者height)的值,此時以content自身長度值爲準;當width(或者height)的值爲auto時,且內容的長度大於flex-basis
設置的值,此時以content自身長度值爲準,且不能進行flex-shrink收縮。相反若是內容的長度小於flex-basis
設置的值,則會使用flex-basis
設置的值;
min-width
(min-height
)時,且 flex-basis
的值小於最小值時,寬度以最小值爲準,當 flex-basis
的值大於最小值時,以 flex-basis
的值爲準五、flex
複合屬性,是flex-grow
、 flex-shrink
和 flex-basis
的簡寫屬性,用來指定Flex子項如何分配空間
取值:none | 各拆分項屬性
注意:
六、align-self
用來單獨指定某Flex子項的對齊方式
取值:auto | flex-start | flex-end | center | baseline | stretch
align-items
值,若是沒有則取值爲stretch
align-items
若是想了解更多關於Flex佈局的內容,能夠查看Flex佈局應用