2013-05-08 20 views
1

我想出瞭如何在2009年實現flexbox時實現樣式,但還有兩種其他實現。短暫的2011年和2012年的部分語法,然後是當前和最終的語法。如何在CSS3的Flexbox的最新實現中編寫此樣式

如何在當前和最終實現中編寫此代碼?

如果你還可以做2011年的實施,那會很棒!

我正在尋找vendor-prefixes。

display:-moz-box; 
display:-webkit-box; 
display:box; 
-moz-box-align:center; 
-webkit-box-align:center; 
box-align:center; 
-moz-box-orient:horizontal; 
-webkit-box-orient:horizontal; 
box-orient:horizontal; 
-moz-box-pack:center; 
-webkit-box-pack:center; 
box-pack:center; 
+1

如果你正在尋找所有從每個草案屬性名稱/值的圖表,你可以在這裏找到它:https://gist.github.com/cimmanon/727c9d558b374d27c5b6。一套新的Flexbox mixin即將推出下一款指南針(for Sass)版本,可爲您完成所有工作。 – cimmanon 2013-05-08 15:31:38

+0

@cimmanon謝謝。鏈接應該有所幫助。我不使用Sass,但謝謝。 – 2013-05-08 15:33:05

回答

2

一套完整的屬性應該是這樣的:

.foo { 
    display: -webkit-box; 
    display: -moz-box; 
    display: -ms-flexbox; 
    display: -webkit-flex; 
    display: flex; 

    -webkit-box-pack: center; 
    -moz-box-pack: center; 
    -ms-flex-pack: center; 
    -webkit-justify-content: center; 
    justify-content: center; 

    -webkit-box-align: center; 
    -moz-box-align: center; 
    -ms-flex-line-pack: center; 
    -webkit-align-content: center; 
    align-content: center; 

    -webkit-box-orient: horizontal; 
    -moz-box-orient: horizontal; 
    -webkit-box-direction: normal; 
    -moz-box-direction: normal; 
    -webkit-flex-direction: row; 
    -ms-flex-direction: row; 
    flex-direction: row; 
} 

注意row/horizontal是默認的方向,這是沒有必要添加它,除非你是從覆蓋它以前的其他column/vertical聲明。

設置爲內聯柔性容器遵循相同的命名約定的另一個內嵌特性(如內聯塊,內聯表等):

.foo { 
    display: -webkit-inline-box; 
    display: -moz-inline-box; 
    display: -ms-inline-flexbox; 
    display: -webkit-inline-flex; 
    display: inline-flex; 
} 

如果你這樣做是專門爲垂直居中,2009年實施的Firefox有時會成爲問題,因爲它並不總是正確包裝。我的建議是相對於現代性是這樣的,2009年的屬性使用不同的屬性:

http://codepen.io/cimmanon/pen/mxuFa

li { 
    text-align: center; 
    vertical-align: middle; 
    display: inline-block; 
    display: -webkit-inline-box; 
    display: -moz-inline-box; 
    display: -ms-inline-flexbox; 
    display: -webkit-inline-flex; 
    display: inline-flex; 
    /* vertical centering for legacy, horizontal centering for modern */ 
    -webkit-box-pack: center; 
    -moz-box-pack: center; 
    -ms-flex-pack: center; 
    -webkit-justify-content: center; 
    justify-content: center; 
    /* modern Flexbox only */ 
    -ms-flex-align: center; 
    -webkit-align-items: center; 
    align-items: center; 
    /* legacy Flexbox only */ 
    -webkit-box-orient: vertical; 
    -moz-box-orient: vertical; 
    -webkit-box-direction: normal; 
    -moz-box-direction: normal; 
} 
+0

我知道我沒有使用內聯flex。但是,你可以在你的答案中加入第二組樣式,它們可以爲inline-flex的整套屬性達到同樣的效果嗎?在我使用內聯flex的情況下,我可以在將來參考這個。我試圖達到的效果是水平和垂直居中。 – 2013-05-08 15:36:10

+0

我試過了,#topBar裏面的段落仍然是頂部對齊的,而不是水平和垂直居中。奇怪的是,當我嘗試2009版時,就像我的問題一樣,它是以中心爲中心的。這裏是頁面:https://dl.dropboxusercontent.com/u/270523/help/setup/setup.html任何想法爲什麼在#topBar中的p不居中? – 2013-05-08 15:43:16

+0

是的,與現代草案相比,2009年草案的行爲存在細微的差異。你所忽視的是'align-items'屬性,它默認爲'stretch'(例如拉伸以填充橫軸上的可用空間,或者在我們的情況下爲垂直)並且在2009年草案中不存在。我的回答結束時的代碼是編寫所有草稿的單個或匿名彈性項目垂直對齊的最有效方法。演示代碼:http://codepen.io/cimmanon/pen/knJcB – cimmanon 2013-05-08 16:30:59