彈性佈局是新一代的佈局方式,傳統佈局中使用浮動佈局會給咱們帶來很多弊端,如CSS代碼高度依賴於HTML代碼結構等等,下面我將用幾個例子讓你們快速學會彈性佈局。css
PS:彈性佈局適用於較簡單的場景,過於複雜的場景能夠嘗試着使用CSS3的Grid佈局,彈性佈局在PC端中還存在兼容性問題,移動端中無兼容性問題,能夠放心使用。html
css3爲新增的彈性佈局提供了多個屬性,分別爲彈性盒模型的容器屬性,以及彈性盒子中子元素的子元素屬性。css3
css3中爲display新增了兩個屬性值,分別爲flex、inline-flexgit
display:flex; /*將容器聲明爲一個彈性盒模型且容器表現爲塊級元素*/
display:inline-flex; /*將容器聲明爲一個彈性盒模型且容器表現爲行內元素*/
複製代碼
容器display:block;github
flex-direction能夠設置主軸的方向,默認值爲row。bash
flex-direction:row | row-reverse | column | column-reverse佈局
.box {
width:500px;
height:500px;
margin:100px auto 0 auto;
background: #eee;
display: flex;
flex-direction: row;
}
.box-item {
width:200px;
height:200px;
line-height:200px;
text-align: center;
color:#fff;
font-size:20px;
}
複製代碼
從上面能夠看出容器的寬高都是500px,子元素的寬高都是200px,那若是咱們一行放3個元素,元素會像浮動佈局那樣換行嗎?flex
flex-wrap:nowrap | wrap | wrap-reversespa
justify-content控制主軸的對齊方式,默認向主軸開始起點位置對齊,值爲flex-start。3d
justify-content:flex-start | flex-end | center | space-between | space-around
align-items控制垂直軸的對齊方式,默認向主軸開始起點位置對齊,值爲flex-start。
align-items:flex-start | flex-end | center | baseline | stretch
剛剛說完了垂直軸只有一個元素的狀況,若垂直軸有兩個元素時,align-items還能起做用嗎? 爲了使垂直軸存在兩個元素,咱們首先設置自動換行
flex-wrap:wrap;
複製代碼
這時咱們要用align-content。 align-content:flex-start | flex-end | center | space-between | space-around
order屬性可用於設置子元素的位置,order的值越小排在越前面,默認值爲0,能夠設置負值。
//設置第三個子元素的order爲-1
.box-item3 {
background: green;
order:-1;
}
複製代碼
彈性佈局簡單易上手,使用熟練以後會發現只須要不多的代碼就能夠實現之前複雜的佈局,彈性佈局最重要的就是兩條軸線,這個必定要熟練掌握,不少屬性的方向都與兩條軸線有關。
若是這篇文章幫到你了,以爲不錯的話來點個Star吧。 github.com/lizijie123