css3彈性盒子模型之box-flex(修正版一)

http://www.rainleaves.com/html/1095.html

css3彈性盒子模型之box-flex(修正版一)

今天看到藍色理想上面有一篇文章講《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>

box-flex
注意:web

父容器必須定義爲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;
}
彈性盒子模型之box-flex

2、box屬性

上面講到的是如何將box-flex如何對父容器的寬度進行劃分,如今來講一下父容器裏面的box屬性包括哪些。
box-orient, box-direction, box-align, box-pack, box-lines
一、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 {
	/*未設置高度*/
}

firefox測試結果chrome測試結果vertical和block-axis屬性效果表現一致,均可將子容器垂直排列。他們是對父容器的高度進行分配。若是子容器設置了寬度,也是谷歌下面有效,火狐無效,其它都與horizontal表現一致。flex

谷歌瀏覽器測試結果火狐瀏覽器測試結果二、box-directionspa

box-direction用來肯定父容器裏面的子容器排列順序,具備如下屬性:

normal | reverse | inherit

normal是默認值,如上面測試結果。

reverse表示反轉,其表現方式跟normal相反,呈現爲三、二、1

reverse顯示效果三、box-align

box-align表示父容器裏面子容器的垂直對齊方式,屬性值爲:

start | end | center | baseline | stretch

start、baseline展現效果

end展現效果

box-flex屬性end展現效果center展現效果

centerstretch展現效果,(谷歌下面如start)

火狐下stretch展現

相關文章
相關標籤/搜索