日期:2014-05-17  浏览次数:20641 次

只有IE8 FF 才会上下边距重叠,IE6 IE7 则不会,是吗??
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<style> 



#my {width:400px; height:400px; border:1px solid #000;} 
#my1{width:200px; height:200px; margin:20px;background-color:#eee} 
#my2{width:100px; height:100px; margin:10px;background-color:red} 
</style> 
</head> 
<body> 

<div id="my"> 

<div id="my1"> 
<div id="my2"> </div> 
</div> 

</div> 

</body> 
</html> 


------解决方案--------------------
今天才看到这个问题,这是个比较典型的边界叠加兼容性的例子,也是因为盒模型解析差异造成的。

IE8我没有测试,但是在FF下,当给外层DIV设置1px以上的border后,一切问题将不复存在。

<style> 
#my {width:400px; height:400px; border:1px solid #000;} 
#my1{width:200px; height:200px; margin:20px; border:1px solid #000; background-color:#eee} 
#my2{width:100px; height:100px; margin:10px; border:1px solid #000; background-color:red} 
</style>

此外,还有一种有趣的现象,也是解决FF下边界叠加问题的办法,即设置内外层DIV的border为0的同时,给外层DIV加上overflow:hidden,如下:
<style> 
#my {width:400px; height:400px; border:1px solid #000;} 
#my1{width:200px; height:200px; margin:20px; border:0; background-color:#eee; overflow:hidden} 
#my2{width:100px; height:100px; margin:10px; border:0; background-color:red} 
</style>