一、按比例划分
<div class="test">
<p id="p1">Hello</p>
<p id="p2">W3School</p>
</div>
<style>
.test{
display:-moz-box;
display:-webkit-box;
display:box;
width:300px;
}
#p1{
-moz-box-flex:1.0;
-webkit-box-flex:1.0;
box-flex:1;
border:1px solid red;
}
#p2{
-moz-box-flex:2.0;
-webkit-box-flex:2.0;
box-flex:2;
border:1px solid blue;
}
</style>
如下圖所示:
二、box具體的屬性如下:
box-orient | box-direction | box-align | box-pack | box-lines
box-orient 用來確定父容器里的子容器的排列方式,是水平還是垂直,可選屬性如下所示:
horizontal | vertical | inline-axis | block-axis | inherit
(1)horizontal | inline-axis
給box設置 horizontal 或 inline-axis 屬性效果表現一致。都可以將子元素進行水平排列.
<div class="test"> <p id="p1">Hello</p> <p id="p2">W3School</p> </div> css代碼如下: <style> .test{ display:-moz-box; display:-webkit-box; display:box; width:300px; height:200px; -moz-box-orient:horizontal; -webkit-box-orient:horizontal; box-orient:horizontal; } #p1{ -moz-box-flex:1.0; -webkit-box-flex:1.0; box-flex:1; border:1px solid red; } #p2{ -moz-box-flex:2.0; -webkit-box-flex:2.0; box-flex:2; border:1px solid blue; } </style>
如下圖所示:
(2)vertical 可以讓子元素進行垂直排列;
<style> *{margin:0;padding:0;} .test{ display:-moz-box; display:-webkit-box; display:box; width:300px; height:200px; -moz-box-orient:vertical; -webkit-box-orient:vertical; box-orient:vertical; } #p1{ -moz-box-flex:1.0; -webkit-box-flex:1.0; box-flex:1; border:1px solid red; } #p2{ -moz-box-flex:2.0; -webkit-box-flex:2.0; box-flex:2; border:1px solid blue; } </style>
如下圖所示:
(3)inherit。 Inherit屬性讓子元素繼承父元素的相關屬性。
效果和第一種效果一樣,都是水平對齊;
2. box-direction
box-direction 用來確定父容器里的子容器的排列順序,具體的屬性如下代碼所示:
normal | reverse | inherit
normal是默認值,按照HTML文檔里的結構的先后順序依次展示, 如果box-direction 設置為 normal,則結構順序還是 id為p1元素,id為p2元素。
reverse: 表示反轉。如果設置reverse反轉,則結構排列順序為 id為p2元素,id為p1元素。如下代碼:
<style> *{margin:0;padding:0;} .test{ display:-moz-box; display:-webkit-box; display:box; width:300px; height:200px; -moz-box-direction:reverse; -webkit-box-direction:reverse; box-direction:reverse; } #p1{ -moz-box-flex:1.0; -webkit-box-flex:1.0; box-flex:1; border:1px solid red; } #p2{ -moz-box-flex:2.0; -webkit-box-flex:2.0; box-flex:2; border:1px solid blue; } </style>
如下圖所示:
3. box-align:
box-align 表示容器里面字容器的垂直對齊方式,可選參數如下表示:
start | end | center | baseline | stretch
(1) start:表示居頂對齊
<style> *{margin:0;padding:0;} .test{ display:-moz-box; display:-webkit-box; display:box; width:300px; height:200px; -moz-box-align:start; -webkit-box-align:start; box-align:start; } #p1{ -moz-box-flex:1.0; -webkit-box-flex:1.0; box-flex:1; height:160px; border:1px solid red; } #p2{ -moz-box-flex:2.0; -webkit-box-flex:2.0; box-flex:2; height:100px; border:1px solid blue; } </style>
如上 P1 高度為160px p2 為100px; 對齊方式如下圖所示:
如果改為end的話,那么就是 居低對齊了,如下:
center表示居中對齊,如下:
stretch 在box-align表示拉伸,拉伸與其父容器等高。如下代碼:
在firefox下 和父容器下等高,滿足條件,如下:
在chrome下不滿足條件;如下:
4. box-pack
box-pack表示父容器里面子容器的水平對齊方式,可選參數如下表示:
start | end | center | justify
box-pack:start; 表示水平居左對齊,對於正常方向的框,首個子元素的左邊緣被放在左側(最后的子元素后是所有剩余的空間)
對於相反方向的框,最后子元素的右邊緣被放在右側(首個子元素前是所有剩余的空間)代碼如下所示:
<style> *{margin:0;padding:0;} .test{ display:-moz-box; display:-webkit-box; display:box; width:400px; height:120px; border:1px solid #333; -moz-box-pack:start; -webkit-box-pack:start; box-pack:start; } #p1{ width:100px; height:108px; border:1px solid red; } #p2{ width:100px; height:108px; border:1px solid blue; } </style>
如下圖所示:
box-pack:center; 表示水平居中對齊,均等地分割多余空間,其中一半空間被置於首個子元素前,另一半被置於最后一個子元素后; 如下圖所示:
box-pack:end; 表示水平居右對齊;對於正常方向的框,最后子元素的右邊緣被放在右側(首個子元素前是所有剩余的空間)。
對於相反方向的框,首個子元素的左邊緣被放在左側(最后子元素后是所有剩余的空間)。如下圖所示:
box-pack:Justify:
在box-pack表示水平等分父容器寬度(在每個子元素之間分割多余的空間(首個子元素前和最后一個子元素后沒有多余的空間))
如下: