2012-01-03 70 views
0
<div id="home"> 
    <div id="fix">aaa<br />fff</div> 
    <div id="text">bvvvbbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb </div> 
</div> 
#fix { 
    width: 500px; 
    position: fixed; 
    background-color: blue; 
    top:0; 
    left:0; 
} 
#text { 
    background-color: green; 
    margin-top:auto; 
    width: 500px; 
    height: 700px; 
} 

爲什麼在這個例子中不margin-top工作?「的margin-top:汽車」 不工作

(在div#fix,用PHP自動生成的數據。)

演示:http://jsfiddle.net/uK2RK/9/

編輯:現在DIV#修復蓋div的#文本。我可以設置margin-top,但我不知道它有多少行,但是這是使用PHP自動生成的。

+2

你能解釋一下你實際想要達到的目標嗎? – 2012-01-03 10:47:48

+0

你期望'margin-top:auto;'實際上* do *?你想[垂直](http://stackoverflow.com/search?q= [css] + vertical + align)[align](http://stackoverflow.com/search?q= [css] + vertical + align&submit = search)div? – 2012-01-03 10:48:55

+0

自動垂直邊距是一種奇怪的野獸。 – BoltClock 2012-01-03 10:53:56

回答

3

它的工作原理應該是這樣的(你沒有說你認爲認爲它應該工作)。

作爲每一個的auto塊級非替換元件在正常流動與overflow: visible(默認)值(如一個div)(它是#text)的CSS 2.1 specification一個margin-top的部分10.6.3被視爲margin-top: 0

因此,該元素在正常流程中位於0像素(除非有其他邊距/填充正在播放,其中沒有)離開前一個元素的底部。由於前一個元素(#fix)爲position: fixed,因此不在正常流程中,因此不存在這樣的元素,因此#text將從其容器頂部(#home)放置0像素。這個位置正好在#fix下面。

+0

和我如何使邊緣從div#編號?我編輯馬答案 – 2012-01-03 11:01:38

+0

@RonCorazon - 你不能。因爲它是'position:fixed',所以它被排除在正常流程之外,所以其他元素的邊距不會觸及它。如果你知道它的高度,你可以僞造它。 – Quentin 2012-01-03 12:03:56

+0

在這裏,在stackoverflow這是可能的 - 頂部的橙色菜單。 – 2012-01-03 12:11:01