2012-01-03 35 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