无内容div占据空间的触发条件和解决方法

当在div标签内无任何内容时:
<div></div>

如果给div元素<b>设置了宽度<b>时,比如width:100%,此时div在IE中(IE6,IE7)将占据物理空间,而在FF中不占据物理空间(正确理解)。为了表述直观,将样式直接写在元素标签内:
<div style="width:100%"></div>

此时在IE中到底是什么在影响着最终的显示,又是如何解析的呢?

可能的影响因素:字体大小(font-size),字体行高(line-height),高度(height),溢出(overflow)

我们对上面的代码逐一添加过滤属性(具体的过程有兴趣的朋友,可以私下里实验一下,“自己动手,丰衣足食”!)

在测试的过程中,你会发现IE6和IE7的解析也不尽相同,比如在给div设置了line-height:0; height:0; 的样式后,IE7中显示正常了,不再占据物理空间了,而IE6却依然我行我素,亦或是悲!

最终的测试结果,最简单的方法是,给div设置高度(height)和溢出(overflow)属性:
<div style="width:100%;height:0;overflow:hidden; "></div>


(来于网络)

坐断江南 笑煞之!!
posted @ 2007-11-09 17:27 坐断东南 笑煞之!! 阅读(216) 评论(1)  编辑 收藏 所属分类: web标准

  回复  引用  查看    
#1楼 2007-11-09 23:53 | Cat Chen      
这显然是hasLayout导致的吧?不是hasLayout的话,根据margin叠加原则,空白<div />甚至空白<p />都不占空间,因为margin都叠加了。然而一旦hasLayout了,它就不是以一个矩形区域的形式占位。

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交