鉴于以下情况,我希望页面顶部有一个200px的红色框,然后是100像素的白色空格,然后是底部的紫色框。这就是Dreamwever中的WYSIWYG视图向我展示的内容,但我在FF IE Chr中获得的是页面中间的红色框。有趣的是,如果我在包装div中添加边框,我会得到我所期望的。
所发生的事情是#content div的margin-top:300px正在推倒#header div。由于#header div绝对位于#wrapper div中,所以不知道为什么会发生这种情况。
<style>
#wrapper{
width:960px;
margin:0 auto;
background-color:#fff;
position:relative;
border:0px solid green;
}
#header{
width:960px;
height:200px;
background-color:#f00;
position:absolute;
top:0px;
left:0px
}
#content{
width:960px;
background-color:#f2f;
margin-top:300px;
}
</style>
<div id="wrapper">
<div id="header">header</div>
<div id="content">content<br /><br /><br /></div>
</div>
答案 0 :(得分:6)
是的,你走在正确的轨道上。真正发生的是300px余量被应用于 #wrapper (因此,随着它推下#header)因为{3的W3C盒模型行为{3}}
在这种情况下,“第一个流动儿童的盒子顶部边缘和上边缘”会崩溃: #wrapper 的0px上边距和 #content < / strong> 300px的上边距合并为 #wrapper 的单一上边距(#内容是第一个流入子项,因为#header具有绝对位置)。
除了边框或更改#header
的位置之外,解决此问题的一种简单方法就是将边距更改为填充:
#content{
width:960px;
background-color:#f2f;
padding-top:300px;
}