margin重叠的定义与计算规则
margin重叠
摘自css2.1规范中文版
CSS中,两个或者多个盒(可能但不一定是兄弟)的相邻的margin会被结合成一个margin。Margin按这种方式结合叫重叠(collapse)
,产生的结合的margin叫做重叠margin。
margin重叠的计算规则
摘自css2.1规范中文版
当两个或者更多的margin合并时,产生的margin宽度为合并margin宽度中的最大值。至于负margin,就从正相邻margin的最大值中减去负相邻margin的绝对值的最大值。如果没有正margin,就用0减去相邻margin的绝对值的最大值
什么是相邻的margin
摘自css2.1规范中文版
两个margin是相邻的,当且仅当:
都属于流内块级盒,处于同一个块格式化上下文。
没有行盒(line box),没有空隙,没有padding并且没有border把它们隔开(注意,因此某些0高度行盒)
都属于竖直相邻盒边(vertically-adjacent box edges),即来自下列某一对:
1.一个盒的top margin和它的第一个流内子级的top margin
2.一个盒的bottom margin和它的下一个流内后面的兄弟(its next in-flow following sibling)的top margin
3.最后一个流内子级的bottom margin和它的父级的bottom margin,如果父级的高度的计算值为'auto'
4.一个盒的top和bottom margin,该盒没有建立一个新的块格式化上下文并且min-height的计算值为0,height的计算值为0或者'auto',并且没有流内子级
如果一个margin的任何部分margin与另一个margin相邻的话,就认为它与那个margin相邻,是合并(collapsed)margin。
具体分析各个条件
1.都属于流内块级盒,处于同一个块格式化上下文。
什么是流内元素?如果一个元素是浮动的,绝对定位的或者是根元素,那么它就是流外元素。如果一个元素不是流外的,就叫流内元素。
流内块级盒,就是流内块级元素生成的一个盒。
结论1:根元素的盒子margin不会发生重叠(原因:根元素虽然是块级盒,但不是流内元素)。
以上就是margin重叠的定义与计算规则的详细内容,更多请关注其它相关文章!
推荐阅读
-
iOS开发 - OCLint自定义规则的编译与Xcode调试
-
【CSS自定义属性】引入| 使用var() | cal()计算 | css与js的连接
-
php栈的定义与入栈出栈方法以及计算器完整的实现实例
-
CSS特异性(CSS Specificity)的细节之CSS样式权重的计算与理解(CSS样式覆盖规则)_html/css_WEB-ITnose
-
margin重叠的定义与计算规则
-
CSS特异性(CSS Specificity)的细节之CSS样式权重的计算与理解(CSS样式覆盖规则)_html/css_WEB-ITnose
-
linux下的软件防火墙iptables——规则的查看与清除、定义默认策略
-
margin重叠的定义与计算规则
-
php栈的定义与入栈出栈方法以及计算器完整的实现实例
-
linux下的软件防火墙iptables——规则的定义与删除