CSS3中的box-flex彈性盒屬性布局的樣本介紹

來源:互聯網
上載者:User
flex布局毫無疑問是當今Web頁面的最強大布局方式,box-flex彈性盒模型是其中的一個代表,這裡我們就來以執行個體講解CSS3中的box-flex彈性盒模型布局

box-flex是css3新添加的盒子模型屬性,它的出現打破了我們經常使用的浮動布局,實現垂直等高、水平均分、按比例劃分。但是它有一定的局限性,在firefox、chrome這瀏覽器下需要使用它們的私人屬性來定義:firefox(-moz)、chrome(-webkit)。

一、box-flex屬性
box-flex主要讓子容器針對父容器的寬度按一定規則進行劃分。

<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,其子容器才可以進行劃分(如果定了display:box則該容器為內嵌元素,使用margin:0 auto讓其置中在firefox下無效,需要通過父容器的text-align:center;來控制。但在chrome下是可以的)
上面所講到的例子中,三個子塊分別設定了1、2、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;   }

二、box屬性
上面講到的是如何將box-flex如何對父容器的寬度進行劃分,現在來說一下父容器裡面的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屬性其效果表現一致,都可以將容器水平排列,在預設情況下也呈現水平排列的樣式。當父容器設定高度時,在firefox下面其子容器的高度無效,但chroma下面則有效。

.col_1 {    height:50px;   }   .col_2 {    height:80px;   }

如果你容器不設定高度,子容器的高度值才生效,在firefox下面他們的高度取其中的最大值。而chrome下面設定高度的子容器為自己的高度,未設定的其高度和最大值的高度一樣,其實就是和父容器的高度一致。

.box {    /*未設定高度*/}   .col_1 {    height:50px;   }   .col_2 {    height:80px;   }   .col_3 {    /*未設定高度*/}

vertical和block-axis屬性效果表現一致,都可將子容器垂直排列。他們是對父容器的高度進行分配。如果子容器設定了寬度,也是Google下面有效,Firefox無效,其它都與horizontal表現一致。

2、box-direction
box-direction用來確定父容器裡面的子容器排列順序,具有以下屬性:
normal | reverse | inherit
normal是預設值,如上面測試結果。
reverse表示反轉,其表現方式跟normal相反,呈現為3、2、1

3、box-align
box-align表示父容器裡面子容器的垂直對齊,屬性值為:
start | end | center | baseline | stretch
start、baseline展示效果

end展示效果

center展示效果

stretch展示效果,(Google下面如start)

4、box-pack
box-pack表示父容器裡面子容器的水平對齊,選擇性參數如下所示:
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表示水平居靠左對齊,如下所示:

end:在box-pack表示水平居靠右對齊,如所示

center:在box-pack表示水平置中對齊,如所示

justify:在box-pack表示兩邊對齊試

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.