margin-top绑架父节点问题的分析
2013-09-17 17:44
330 查看
转载至:http://www.benben.cc/blog/?p=98
现象:
当两个空的块级元素嵌套时,如果内部的块设置有margin-top属性,而且父元素没有下边解决方法所述的特征,那么内部块的margin-top属性会绑架父元素(即将margin-top传递凌驾给了父元素)。
就好比一个小兵,看到上级有漏洞,就假传圣旨,利用漏洞扩张自己的权利。只要设置父元素的border(栅栏)或者padding(隔离墙),就能管住这个调皮的下属。
解决方法:
1、设置父元素或者自身的display:inline-block;
2、设置父元素的border:1px aqua solid;(>0)
3、设置父元素的padding:1px;(>0)
4、给父元素设置overflow:hidden;
5、给父元素或者自身设置position:absolute;
6、设置父元素非空,填充一定的内容。
这个现象并不是bug,而是有理论依据的:
《on having layout》
hasLayout 会影响一个盒子和其子孙的边距重叠。根据规范,一个盒子如果没有上补白和上边框,那么它的上边距应该和其文档流中的第一个孩子元素的上边距重叠。
但值得一提的是,只有在FF和Chrome下才会出现这种margin-top绑架父节点的情况,在IE6 IE7中均显示正常,但这恰恰说明了他们是不符合规范的,而FF合Chrome则是严格遵守规范的。
现象:
当两个空的块级元素嵌套时,如果内部的块设置有margin-top属性,而且父元素没有下边解决方法所述的特征,那么内部块的margin-top属性会绑架父元素(即将margin-top传递凌驾给了父元素)。
就好比一个小兵,看到上级有漏洞,就假传圣旨,利用漏洞扩张自己的权利。只要设置父元素的border(栅栏)或者padding(隔离墙),就能管住这个调皮的下属。
1 2 3 | <div id="parrent"> <div id="box1"></div> </div> |
1 2 34 | #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、设置父元素非空,填充一定的内容。
这个现象并不是bug,而是有理论依据的:
《on having layout》
hasLayout 会影响一个盒子和其子孙的边距重叠。根据规范,一个盒子如果没有上补白和上边框,那么它的上边距应该和其文档流中的第一个孩子元素的上边距重叠。
但值得一提的是,只有在FF和Chrome下才会出现这种margin-top绑架父节点的情况,在IE6 IE7中均显示正常,但这恰恰说明了他们是不符合规范的,而FF合Chrome则是严格遵守规范的。
相关文章推荐
- margin-top绑架父节点问题的分析
- margin-top在firefox中会绑架父节点的margin的分析
- margin-top在 firefox中会绑架父节点的margin的分析
- margin-top导致子标签绑架父标签问题
- margin-top导致子标签绑架父标签问题
- margin-top导致子标签绑架父标签问题
- 父元素与子元素之间的margin-top问题(css hack)
- HTML5-margin-top的塌陷问题
- margin-top越界以及所有子元素浮动后父元素高度为0且影响后续元素的问题。
- 算法分析-TOP-K问题-BFPRT算法
- 父元素与子元素之间的margin-top问题(css hack)
- 关于margin-top失效的一个小问题
- margin-top遇到的小问题
- 小菜学习日记—div嵌套导致子区域margin-top失效问题(外边距合并问题)
- div中嵌套div中使用margin-top失效问题
- margin塌陷问题:父元素与子元素之间的margin-top问题
- 子元素的margin-top与父元素合并的问题
- 父元素与子元素之间的margin-top问题(cssHack)
- margin-top失效, css + div 布局之 CSS盒模型 外边距合并问题 问题表述: 那天晚上一个同学给我发来一个问题,原型大概是“一个maindiv嵌套了一个div.class="he