今天看到藍色理想上面有一篇文章講《css3彈性盒模型佈局模塊介紹》裏面講到用box-flex,忽然以爲有點心慌,上次看到響應式網頁設計裏面也一樣講到flex box自適應佈局,而上次居然沒有引發本身的注意,想深刻研究一下,居然給忘記了,因而就在這種不斷的忘記中完全變成outer。今天藉此機會,好好充電一下,看了adou寫的關於box-flex的文章,發現裏面存在一些問題,冒昧更正了一下,若有不妥還請你們指正。css
box-flex是css3新添加的盒子模型屬性,它的出現打破了咱們常用的浮動佈局,實現垂直等高、水平均分、按比例劃分。可是它有必定的侷限性,在firefox、chrome這瀏覽器下須要使用它們的私有屬性來定義:firefox(-moz)、chrome(-webkit)。html
1、box-flex屬性
box-flex主要讓子容器針對父容器的寬度按必定規則進行劃分。css3
<div class="box"> <div class="col_1">111</div> <div class="col_2">222</div> <div class="col_3">333</div> </div>
<style type="text/css"> .box { display:box; display:-webkit-box; display:-moz-box; background-color:#fff; width:500px; height:100px; border:1px solid #333; margin:0 auto; } .col_1 { box-flex:1; -moz-box-flex:1; -webkit-box-flex:1; background-color:#ffc; } .col_2 { background-color:#ccf; box-flex:2; -moz-box-flex:2; -webkit-box-flex:2; } .col_3 { background-color:#fcf; box-flex:2; -moz-box-flex:2; -webkit-box-flex:2; } </style>
父容器必須定義爲display:box,其子容器才能夠進行劃分(若是定了display:box則該容器爲內聯元素,使用margin:0 auto讓其居中在firefox下無效,須要經過父容器的text-align:center;來控制。但在chrome下是能夠的)chrome
上面所講到的例子中,三個子塊分別設置了一、二、2,也就是把這個父容器分紅5份,分別佔據了父結構寬度的1/5(100px)、2/5(200px)、2/5(200px)。瀏覽器
以上是按比例數來進行劃分的,若是其中一個或多個子容器設置了固定寬度,其它子容器沒有設置,那麼設置寬度的按寬度來算,剩下的部分再按上面的方法來計算。佈局
.col_3 { background-color:#fcf; width:50px;/*設置寬度爲50px*/ }
當子容器中須要有間隔的時候,他們平分的寬度須要減去中間的margin,而後再按比例平分。測試
.col_2 { background-color:#ccf; box-flex:2; -moz-box-flex:2; -webkit-box-flex:2; margin:0 20px; }
2、box屬性
box-orient, box-direction, box-align, box-pack, box-lines
horizontal | vertical | inline-axis | block-axis | inherit
.col_1 { height:50px; } .col_2 { height:80px; }
![04 谷歌瀏覽器顯示效果](http://static.javashuo.com/static/loading.gif)
.box { /*未設置高度*/ } .col_1 { height:50px; } .col_2 { height:80px; } .col_3 { /*未設置高度*/ }
vertical和block-axis屬性效果表現一致,均可將子容器垂直排列。他們是對父容器的高度進行分配。若是子容器設置了寬度,也是谷歌下面有效,火狐無效,其它都與horizontal表現一致。flex
box-direction用來肯定父容器裏面的子容器排列順序,具備如下屬性:
normal | reverse | inherit
normal是默認值,如上面測試結果。
reverse表示反轉,其表現方式跟normal相反,呈現爲三、二、1
box-align表示父容器裏面子容器的垂直對齊方式,屬性值爲:
start | end | center | baseline | stretch
start、baseline展現效果
end展現效果