我注意到IE7中的奇怪行为在Firefox中没有出现。 如果您在“测试2”“div”中注意到,当我在此div的底部添加2个换行符时, 它不尊重为此div设置的边距,并且“test 3”div正好位于它下方,没有边距。当我删除“br”时,“test 2”和“test 3”div在它们之间有边距。
这是IE7的错误还是有解决方法?
<div style="border: dotted 1px red;">
<div id="main" style="border: solid 1px black; padding: 10px; margin: 5px; float:left ">
testing 1
<div style="border: solid 1px black; padding: 10px; margin: 10px;">
testing 2
<br><br> <!-- THIS LINE -->
</div>
<div style="border: solid 1px black; padding: 10px; margin: 10px; ">
testing 3
</div>
</div>
<div style="border: solid 1px black; padding: 10px; margin: 20px; float: left">
testing 4
</div>
<div style="clear:both"></div>
</div>
<\html><\body>
答案 0 :(得分:1)
我不确定为什么IE会这样做,但一个合理的解决方案是用另一个div包装“testing 2”div的内容,如下所示:
<div style="border: solid 1px black; padding: 10px; margin: 10px;">
<div>
testing 2
<br/>
<br/>
<!-- THIS LINE -->
</div>
</div>
但是我建议不要使用&lt; br /&gt;如果你能帮助它;如果可以的话,使用CSS对它进行排序! :)
答案 1 :(得分:1)
IE7的确存在nested elements and their margins的问题。
您可以通过强制将“测试2”div
强制为have layout来解决此问题。
在这种情况下,在'测试2'height:100%;
上设置div
将获得边距。我创建了一个working example来演示修复程序。
值得注意的是,通过强制或从元素中删除布局,可以解决很大一部分IE CSS错误。
答案 2 :(得分:0)
可能不是最好的解决方案,但在标签帮助后添加一个不间断的空间: 改变
<br><br> <!-- THIS LINE -->
成:
<br><br> <!-- THIS LINE -->
...好的,由于某种原因它不会通过......不间断的空间是“&amp; nbsp;” (没有引号,中间没有空格)
答案 3 :(得分:0)
不要使用<br>
,而是在padding-bottom
规则之后使用padding
,在您的div上。
答案 4 :(得分:0)
从语义上讲,您应该将该文本放在<p>
,<blockquote>
或其他块级元素中。尽量避免将文本直接放在<div>
中,因为它们用于指示页面中的分区或部分。
例如:
<div style="border: 1px solid black; padding: 10px; margin: 10px;">
<p style="margin: 0 0 10px 0;">testing 2</p>
</div>
这解决了IE7中的问题,并且在其他浏览器中也会更加一致。