div内嵌p,div等块元素出现的问题

div内嵌p,div等块元素出现的问题

http://caiceclb.iteye.com/blog/428085

div内部块级元素,比如p,div,设置外间距(margin)的话会怎样。本来还纳闷div莫名奇妙的怎么多出了一些外边距,甚至设置margin为0,都不能解决问题。到底是怎么回事呢?

1、

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4   <title>div嵌套p/div</title>
 5   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 6   <style type="text/css">
 7     body,p,div {margin:0;padding:0;}
 8     #top,#bottom {background:red;}
 9     #bottom{background:green;}
10     p{margin:20px;}
11     #div {margin:30px;}
12     #div {margin:0;}
14   </style>
15 </head>
16 <body>
17   <div id="top">
18     <p>p-tag margin</p>
19   </div>
20   <div id="bottom">
21     <div id="div">div margin</div>
22   </div>
23 </body>
24 </html>

现在 p.margin="20px";FF,chrome,opera,IE6,IE9测试发现div#top并没有变大,看底色就知道;但却多了个margin。

那设定#top.margin=0;呢?没用。

然后#div.margin:30px;发现出现一样的问题。

怎么办?幸亏我以前看过怎么测试修改方面的资料;加border或者overflow,zoom(ie)。

解决方案1,给#top加border测试; border:1px solid #000;

  好,正常了,但是边框有宽度啊,影响效果。那就加个margin:-1px; 测试发现没效果,高度还是多了2px。

解决方案2:

overflow:hidden; 测试效果:FF,chrome,opera,ie9都有效果,ie6没效果;

zoom:1; 测试只有ie6有效果;

两者结合一起使用呢?测试:都有效果。

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4   <title>div嵌套p/div</title>
 5   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 6   <style type="text/css">
 7     body,p,div {margin:0;padding:0;zoom:1;overflow:hidden;}/*border:1px solid #000;margin:-1px;*/
 8     #top,#bottom {background:red; }
 9     #bottom{background:green;}
10     p{margin:20px;}
11     #div {margin:30px;}
12     #div {margin:0;}
13   </style>
14 </head>
15 <body>
16   <div id="top">
17     <p>p-tag margin</p>
18   </div>
19   <div id="bottom">
20     <div id="div">div margin</div>
21   </div>
22 </body>
23 </html>

/////////////////////////////////////////////////////////////////////////////////

原理我不清楚,先用着;当然建议不要这么嵌套着用。

原文地址:https://www.cnblogs.com/tamato-jacob-wealllostcontrol/p/5385953.html