1

我知道双边距的bug,但这是不同的..场景是有一个底部边距的元素,然后直接在它下面包含浮动元素(这是在最后清除)时,容器元素可以说底部边界应该位于它所包含的浮动元素的下面。然而,即IE7和6,底部边界与其内容物间隔开了相同量的它上面的元素的底边距..IE6和7,奇怪的边距“继承”

这不是真正的继承,更是一个保证金涂抹两次,并在错误的位置..这里的一些回购代码:

<h1 style="margin: 0 0 50px 0;">Menu</h1> 
<div style="border-bottom: solid 1px #000;"> 
    <div style="float: left;">Hello world?</div> 
    <div style="clear: left;"></div> 
</div> 

坚持在一个投诉页面(我使用xhtml过渡),你会注意到边框不出现在文本下方,但距离它50px ...距离“菜单”与文本相距的距离..

测试这个反对说.. IE8,和边界正确坐在正文下。

这是我先前已经注意到,并成功地忽略和解决,但我想知道,如果这个bug被命名的,如果有一个很好的方法来解决它..

(中我通常会解决的方法是用填充来填充H1,但这并不总是合理的)。

回答

3

您需要在外部div上调用hasLayout才能正常显示IE。您可以通过将宽度或高度添加到div或缩放来实现:1。

这些也将清除你在IE中的浮动,所以你可以删除<div style="clear: left;"></div>。要清除其他浏览器中的浮点数,请使用overflow:hidden;

<h1 style="margin: 0 0 50px 0;">Menu</h1> 
<div style="border-bottom: solid 1px #000;overflow:hidden;zoom:1;"> 
    <div style="float: left;">Hello world?</div> 
</div> 
+0

棒极了,我想我需要触发IE布局,但我添加了相对于尝试触发行为改变的位置。 完美答案,谢谢! – meandmycode 2009-06-05 10:52:21