这是哪个CSS错误?(margin-bottom,IE6 + IE7)

Which CSS bug is this? (margin-bottom, ie6 + ie7)

提问人:Jeff 提问时间:10/20/2009 更新时间:10/20/2009 访问量:5269

问:

在 ie6 和 ie7 中,from the 被应用于它下面的 AND。margin-bottomppdiv

换句话说,此代码将 20px 的 a 应用于 ie6 和 ie7 中的 和 。在任何版本的 FF、Opera、Chrome/Safari 或 ie8 中都没有问题。margin-bottompdiv

<p style="margin-bottom: 20px;">Hello world!</p>
<div style="float: left; display: inline">
    Hello world, part deux.
</div>

当然,从 div 中删除浮点数可以解决这个问题。这是哪个 ie/CSS 错误,如果有的话,我应该搜索什么来弄清楚如何修复它?

p.s. 不幸的是,我无法为 ,分配宽度。div

CSS 6 互联网 浏览器-7

评论

0赞 Jeff 10/20/2009
如果有人有更好的主意,除了添加一个混合到背景中的想法,我很想听听。我想过在它下面放一个“隐藏的”p 或 div,但不太喜欢这个想法。border-bottomp

答:

0赞 Cᴏʀʏ 10/20/2009 #1

我想您可能会遇到此处解释的问题。不幸的是,修复的一部分是给宽度并使其 ,您不能做或已经做过的事情。也许它会帮助你理解为什么会发生这种情况......<div>display: inline

评论

0赞 Jeff 10/20/2009
我很欣赏输入,但我的情况不是双边距错误。
3赞 Corey Ballou 10/20/2009 #2

float: left 实质上会导致 DIV 容器被推送到文档流中最左上角的位置。在这种情况下,由于前一个 P 标签未浮动,因此忽略边距底部。这将产生预期的效果,尽管不是很干净的代码:

<p style="float: left; display: inline; margin-bottom: 20px;">Hello world!</p>
<div style="clear: left; float: left; display: inline">
    Hello world, part deux.
</div>

但是,理想的做法是简单地从元素中删除浮点数,并保留它们的预期状态(块级元素):

<p style="margin-bottom: 20px;">Hello world!</p>
<div>Hello world, part deux.</div>

也许我错过了这两个容器在你的情况下的预期效果。

评论

0赞 Jeff 10/20/2009
我想你已经开始了......我希望在父 div 上一直延伸(带有 bg 颜色等)并具有 20px。它下面的 div 应该向左浮动。pmargin-bottom
0赞 Corey Ballou 10/20/2009
出于任何给定的原因,您真的需要浮动 div 吗?它不应该跨越整个宽度吗?
0赞 Jeff 10/20/2009
是的,它应该向左浮动,因为它旁边会有几个 div(在它的右侧)......包含表单控件。为了简单起见,我将它们从上面的代码中省略了。
0赞 Jeff 10/20/2009
我真的很感谢你的投入。我发现实现我需要发生的事情的唯一方法是将 a 应用于与容器相同的 bg 颜色。不喜欢它,但这就是我所做的。border-bottomp
0赞 Corey Ballou 10/21/2009
您应该尝试将所有浮动的 DIV 包装在父 DIV <div style=“overflow:hidden”></div 中>这将遵循 P 的边距底部,并且还会清除浮点数中包含的子项。