首页 > web前端 > css教程 > css中关于margin不重叠的图文代码详解

css中关于margin不重叠的图文代码详解

黄舟
发布: 2017-07-18 13:47:41
原创
1610 人浏览过

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不会发生重叠(原因:根元素虽然是块级盒,但不是流内元素)。

    举个

以上是css中关于margin不重叠的图文代码详解的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板