现象:
当两个空的块级元素嵌套时,如果内部的块设置有margin-top属性,而且父元素没有下边解决方法所述的特征,那么内部块的margin-top属性会绑架父元素(即将margin-top传递凌驾给了父元素)。
就好比一个小兵,看到上级有漏洞,就假传圣旨,利用漏洞扩张自己的权利。只要设置父元素的border(栅栏)或者padding(隔离墙),就能管住这个调皮的下属。

<div id="parrent"> <div id="box1"></div></div>

#parrent{ width:500px; height:300px; background:teal;}

#box1{ width:100px; height:100px; background:aqua; margin:20px;}

解决方法:
1、设置父元素或者自身的display:inline-block;
2、设置父元素的border:1px aqua solid;(>0)
3、设置父元素的padding:1px;(>0)
4、给父元素设置overflow:hidden;
5、给父元素或者自身设置position:absolute;
6、设置父元素非空,填充一定的内容。

1、如果啥都不设置会是第一种效果

div style="background:black;border:1px solid red;">
<div style="width:400px;height:300px;background:red;">
<div style="width:300px;height:200px;background:green;margin:20px;">
</div>
</div>
</div>

2、设置个border,就可以达到想要的效果了

<div style="background:black;border:1px solid red;">
<div style="width:400px;height:300px;background:red;border-top:1px solid red;">
<div style="width:400px;height:300px;background:green;margin:20px;">
</div>
</div>
</div>

这个现象并不是bug,而是有理论依据的:

《on having layout》
hasLayout 会影响一个盒子和其子孙的边距重叠。根据规范,一个盒子如果没有上补白和上边框,那么它的上边距应该和其文档流中的第一个孩子元素的上边距重叠。

但值得一提的是,只有在FF和Chrome下才会出现这种margin-top绑架父节点的情况,在IE6 IE7中均显示正常,但这恰恰说明了他们是不符合规范的,而FF合Chrome则是严格遵守规范的。

最新文章

  1. Angular初步
  2. Discuz门户首页关键词和描述显示“首页”的解决方法
  3. 【代码笔记】iOS-推荐收听,左右两个tableView
  4. Windows Azure Service Bus (6) 中继(Relay On) 使用VS2013开发Service Bus Relay On
  5. Zip 压缩、解压技术在 HTML5 浏览器中的应用
  6. python 怎样使用安装库
  7. 【剑指Offer学习】【面试题55:字符流中第一个不反复的字符】
  8. 使用 trait 时报PHP Parse error: syntax error, unexpected &#39;use&#39; (T_USE) 这个错误
  9. CentOS6.5与XP双系统安装
  10. 由RGB到HSV颜色空间的理解
  11. HDU1506 ( Largest Rectangle in a Histogram ) [dp]
  12. [妙味DOM]第四课:Event-事件详解2
  13. linux 的tee命令
  14. 开始食用grpc(之二)
  15. input type = file 在部分安卓手机上无法调起摄像头和相册
  16. [Linux 性能调优] 网卡中断与CPU的绑定问题
  17. 1-Android开发验证码(使用第三方Mob,注册)
  18. [洛谷P3948]数据结构 题解(差分)
  19. [UE4]保存玩家列表
  20. Eureka集群试验的一点总结

热门文章

  1. MFC串口通信
  2. (原)在ubuntu 中安装 swi prolog 和 简单的使用
  3. ETL概述
  4. QT中的OpcDa 客户端 实现
  5. ZOJ 3745 Salary Increasing
  6. C语言之预处理命令
  7. linux服务器之间拷贝文件和文件夹
  8. Spring3.0.5 获取表中自增的主键(mysql)
  9. Oracle select 中case 的使用以及使用decode替换case
  10. 【转】 linux内核移植和驱动添加(三)