box-flex是css3新添加的盒子模型屬性,它的出現(xiàn)打破了我們經(jīng)常使用的浮動(dòng)布局,實(shí)現(xiàn)垂直等高、水平均分、按比例劃分。但是它有一定的局限性,在firefox、chrome這瀏覽器下需要使用它們的私有屬性來定義:firefox(-moz)、chrome(-webkit)。
一、box-flex屬性
box-flex主要讓子容器針對(duì)父容器的寬度按一定規(guī)則進(jìn)行劃分。
<p class="box"> <p class="col_1">111</p> <p class="col_2">222</p> <p class="col_3">333</p> </p> <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,其子容器才可以進(jìn)行劃分(如果定了display:box則該容器為內(nèi)聯(lián)元素,使用margin:0 auto讓其居中在firefox下無效,需要通過父容器的text-align:center;來控制。但在chrome下是可以的)
上面所講到的例子中,三個(gè)子塊分別設(shè)置了1、2、2,也就是把這個(gè)父容器分成5份,分別占據(jù)了父結(jié)構(gòu)寬度的1/5(100px)、2/5(200px)、2/5(200px)。
以上是按比例數(shù)來進(jìn)行劃分的,如果其中一個(gè)或多個(gè)子容器設(shè)置了固定寬度,其它子容器沒有設(shè)置,那么設(shè)置寬度的按寬度來算,剩下的部分再按上面的方法來計(jì)算。
.col_3 { background-color:#fcf; width:50px;/*設(shè)置寬度為50px*/ }
當(dāng)子容器中需要有間隔的時(shí)候,他們平分的寬度需要減去中間的margin,然后再按比例平分。
.col_2 { background-color:#ccf; box-flex:2; -moz-box-flex:2; -webkit-box-flex:2; margin:0 20px; }
二、box屬性
上面講到的是如何將box-flex如何對(duì)父容器的寬度進(jìn)行劃分,現(xiàn)在來說一下父容器里面的box屬性包括哪些。
box-orient, box-direction, box-align, box-pack, box-lines
1、box-orient
box-orient用來確定父容器里子容器的排列方式是水平還是垂直,可選屬性如下:
horizontal | vertical | inline-axis | block-axis | inherit
horizontal和inline-axis屬性其效果表現(xiàn)一致,都可以將容器水平排列,在默認(rèn)情況下也呈現(xiàn)水平排列的樣式。當(dāng)父容器設(shè)置高度時(shí),在firefox下面其子容器的高度無效,但chroma下面則有效。
.col_1 { height:50px; } .col_2 { height:80px; }
如果你容器不設(shè)置高度,子容器的高度值才生效,在firefox下面他們的高度取其中的最大值。而chrome下面設(shè)置高度的子容器為自己的高度,未設(shè)置的其高度和最大值的高度一樣,其實(shí)就是和父容器的高度一致。
.box { /*未設(shè)置高度*/ } .col_1 { height:50px; } .col_2 { height:80px; } .col_3 { /*未設(shè)置高度*/ }
vertical和block-axis屬性效果表現(xiàn)一致,都可將子容器垂直排列。他們是對(duì)父容器的高度進(jìn)行分配。如果子容器設(shè)置了寬度,也是谷歌下面有效,火狐無效,其它都與horizontal表現(xiàn)一致。
2、box-direction
box-direction用來確定父容器里面的子容器排列順序,具有以下屬性:
normal | reverse | inherit
normal是默認(rèn)值,如上面測(cè)試結(jié)果。
reverse表示反轉(zhuǎn),其表現(xiàn)方式跟normal相反,呈現(xiàn)為3、2、1
3、box-align
box-align表示父容器里面子容器的垂直對(duì)齊方式,屬性值為:
start | end | center | baseline | stretch
start、baseline展示效果
end展示效果
center展示效果
stretch展示效果,(谷歌下面如start)
4、box-pack
box-pack表示父容器里面子容器的水平對(duì)齊方式,可選參數(shù)如下所示:
start | end | center | justify
css代碼
.box { display:box; display:-webkit-box; display:-moz-box; background-color:#fff; width:500px; border:1px solid #333; margin:0 auto; height:100px; -webkit-box-pack:start; -moz-box-pack:start; box-pack:start; } .col_1,.col_2,.col_3{ width:100px; }
start:在box-pack表示水平居左對(duì)齊,如下所示:
end:在box-pack表示水平居右對(duì)齊,如下圖所示
center:在box-pack表示水平居中對(duì)齊,如下圖所示
justify:在box-pack表示兩邊對(duì)齊試
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com