這應該適用於您的第二個示例:http://jsfiddle.net/8rWwt/
我已經包含非前綴版本,-ms-版本和現代-webkit-版本。這個例子中的語法非常相似。這足以支持大多數仍在使用的Chrome桌面版本,Opera以及IE10和11.火狐正在使用即將推出的版本中前綴最新的語法。當他們自動更新時,它也會在短時間內全面工作。
我第一次做身體Flex容器,使紅色DIV可以居中,並告訴它在兩個行內和塊方向中心:
body {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
}
現在紅色的div居中。
接下來我給紅色div添加一個高度(否則就沒有任何東西可以展開,因爲hight會是它的子項的高度),並且使它成爲一個彈性容器(綠色和藍色div不會變成flex項目,除非他們的父項是flex容器)。然後我設定的項目列的方向,使它們堆疊在彼此的頂部,而不是行的默認:
.red {
background-color: red;
height: 50%;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-ms-flex-direction: column;
-webkit-flex-direction: column;
flex-direction: column;
}
現在幾乎準備就緒。所需要的最後一件事是告訴藍格佔用剩餘的空間:
.blue {
background-color: blue;
-ms-flex: 1;
-webkit-flex: 1;
flex: 1;
}
如果你想它在當前/舊Firefox和Safari工作,你將需要添加的語法舊的Flexbox。 My article on Smashing Magazine包括底部的表格,映射語法。
第一個例子只是第二個例子的簡化版本。我刪除了flexbox屬性以居中居中,而是將灰色div設置爲100%高和100%寬。我也翻箱子的順序,綠框是第一,應該彎曲:
http://jsfiddle.net/8rWwt/1/
是否有您要使用Flexbox的在更傳統的方法的具體原因是什麼?第一種方法可以像使用Flexbox一樣簡單地使用display:table/table-cell來完成,並且因此具有更好的瀏覽器支持。第二個只是一個變化。如果您一般對Flexbox感興趣,可能會感興趣:http://codepen.io/cimmanon/tag/flexbox和https://gist.github.com/cimmanon/727c9d558b374d27c5b6 – cimmanon
我知道如何將一箇中心div與顯示錶/表格,但我不知道如何拉伸div到可用的空間(佈局1:紫色框,佈局2:藍色框)。這就是爲什麼我首先想到了柔性盒,但肯定我對柔性盒一般很感興趣。我不需要支持IE9及以上版本,所以瀏覽器對flexbox的支持也不錯。 編輯:那麼,對舊規格的支持是好的,對於新的老實說bot。所以顯示:table/table-cell現在可能是更好的選擇,但是你能給我一個關於這個高度問題的CSS例子嗎? – Daniel
請參閱:http://timothy-long.com/responsive-sticky-footer/或http://pixelsvsbytes.com/blog/2011/09/sticky-css-footers-the-flexible-way/。請記住,決定使用還是不使用Flexbox並不完全基於支持,而是需要多少屬性+前綴才能完成相同的任務。如果你使用它,它確實需要成爲最好的方式*。 – cimmanon