2013-05-27 27 views
-1

我正在使用網絡應用程序。 HTMl/CSS對我來說從來都不是什麼大問題,只是優化了Internet Explorer的網站:)我用這個應用程序完成了很多工作,只有一些「次要」的東西,我真的不知道如何解決。這就是爲什麼我要求你的幫助:Flexbox佈局 - 中心和100%的Web應用程序

我認爲這兩個佈局(附加屏幕)可以通過使用新的柔性箱,但我從來沒有與之前的工作,有這麼多不同的規格(2009年,2011年,2012 ...),所以我真的不知道從哪裏開始。第一個問題只是一個普遍問題:這兩種佈局是否可以通過flexbox或HTML/CSS進行操作?

Layout 1 Layout 2

我試圖描述儘可能,真的不知道,如果它有足夠的瞭解這個概念。隨意問任何事情。這兩種佈局都差不多,所以我認爲如果有可能的話,另一種佈局也應該是可行的。

有人在那裏,誰可以給我一個快速和粗略的代碼示例,如何編程這兩個佈局?這對我自己來說是很好的(進入這個flexbox的東西)來描述一下代碼(評論或其他)。對我來說,至少有一些起點是非常有幫助的,因爲目前我只是堅持了幾天。

在此先感謝:)

+0

是否有您要使用Flexbox的在更傳統的方法的具體原因是什麼?第一種方法可以像使用Flexbox一樣簡單地使用display:table/table-cell來完成,並且因此具有更好的瀏覽器支持。第二個只是一個變化。如果您一般對Flexbox感興趣,可能會感興趣:http://codepen.io/cimmanon/tag/flexbox和https://gist.github.com/cimmanon/727c9d558b374d27c5b6 – cimmanon

+0

我知道如何將一箇中心div與顯示錶/表格,但我不知道如何拉伸div到可用的空間(佈局1:紫色框,佈局2:藍色框)。這就是爲什麼我首先想到了柔性盒,但肯定我對柔性盒一般很感興趣。我不需要支持IE9及以上版本,所以瀏覽器對flexbox的支持也不錯。 編輯:那麼,對舊規格的支持是好的,對於新的老實說bot。所以顯示:table/table-cell現在可能是更好的選擇,但是你能給我一個關於這個高度問題的CSS例子嗎? – Daniel

+1

請參閱:http://timothy-long.com/responsive-sticky-footer/或http://pixelsvsbytes.com/blog/2011/09/sticky-css-footers-the-flexible-way/。請記住,決定使用還是不使用Flexbox並不完全基於支持,而是需要多少屬性+前綴才能完成相同的任務。如果你使用它,它確實需要成爲最好的方式*。 – cimmanon

回答

1

這應該適用於您的第二個示例: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/

+0

非常感謝您的詳細描述。還有一個問題我想問你:你推薦在我的情況下使用什麼?我應該使用display:table/display:table-cell,還是應該爲flex box嘗試,它具有更差的瀏覽器支持,但HTML更簡單? – Daniel

+0

@DavidStorey我愛你在Smashing雜誌上的文章幫助我瞭解flexbox的工作原理。 –

+0

@DavidStorey我剛剛嘗試了你的代碼並修改了一下。它應該與Safari/Firefox現在一起工作,並且我將Layout 1和Layout 2合併到一個Layout中。最後它應該是一個包含不同幻燈片的滑塊。每個幻燈片(「.slider__slider」)應該是100%/ 100%(相對於身體)。我上傳了我的代碼,所以你可以看看它:http://jsfiddle.net/tgvVN/ – Daniel

2

是的,你可以!這裏是一個big tutorial

你的第一個願望:

Live Example

HTML

<div class="parent"> 
    <div class="purple"> 
    </div> 
    <div class="green"> 
     big<br> 
     test<br> 
     content<br> 
     very<br> 
     big<br> 
    </div> 
</div> 

CSS

 
html, body{ 
    height: 100%; 
} 

.parent{ 
    display: -webkit-box; /* OLD: Safari, iOS, Android browser, older WebKit browsers. */ 
    display: -moz-box;  /* OLD: Firefox (buggy) */ 
    display: -ms-flexbox; /* MID: IE 10 */ 
    display: -webkit-flex; /* NEW, Chrome 21+ */ 
    display: flex;   /* NEW: Opera 12.1, Firefox 22+ */ 

    -webkit-flex-flow: column; 
    -moz-flex-flow: column; 
    -ms-flex-flow: column; 
    -o-flex-flow: column; 
    flex-flow: column; 
    height: 100%; 
} 
.purple{ 
    display: -webkit-box; display: -moz-box; 
    display: -ms-flexbox; 
    display: -webkit-flex; 
    display: flex; 

    -moz-box-flex: auto; 
    -webkit-box-flex: auto; 
    -webkit-flex: auto; 
    -ms-flex: auto; 
    flex: auto; 
    background: purple; 
} 
.green { 
    display: -webkit-box; display: -moz-box; 
    display: -ms-flexbox; 
    display: -webkit-flex; 
    display: flex; 

    flex-direction: column; 
    background: green; 
} 
+0

謝謝,多數民衆贊成,只要我嘗試cimmanon的解決方案,我會盡快閱讀它 – Daniel

+0

Flexbox是真的很大,現在...許多前綴...你應該關心它 –

+0

是的,你是正確的前綴。剛剛看過你的實例,非常感謝你。適用於Chrome瀏覽器,但對於Safari 6至今似乎不起作用。但我認爲這是因爲綠框缺少-webkit屬性。我會看看它,看看,如果我應該去flexbox或堅持table/table-cell(如上面提到的cimmanon)。不知道對不對。 – Daniel