代码之家  ›  专栏  ›  技术社区  ›  aefxx

为什么截然相反的边距不与所涉及的表重叠?

  •  1
  • aefxx  · 技术社区  · 14 年前

    我想知道为什么两个块元素(例如div)之间截然相反的边距(边距上接边距下)合并,而块元素和表之间的边距相加。

    例子:

    <style>
        .a { margin-bottom: 18px; }
        .b { margin-top: 6px; }
    </style>
    
    <div class="a">Foo</div>
    <div class="b">Bar</div>
    
    ...
    
    <table class="a">...</table>
    <div class="b">Bar</div>  
    

    请注意:如果我将表的display属性更改为“block”,它的行为与任何其他块元素对一样,并且它们的边距被合并。

    为什么会这样?

    3 回复  |  直到 7 年前
        1
  •  3
  •   Gabriele Petrioli    14 年前

    它是 箱模型 打电话 外边距折叠 W3解释得比我好

    http://www.w3.org/TR/CSS2/box.html#collapsing-margins

        2
  •  1
  •   Sarfraz    14 年前

    块级元素(div等)之间的合并,并在块级元素和内联元素中求和。 See this for more info.

        3
  •  -1
  •   CalebD    14 年前

    这是因为表没有默认的显示值 block 但不是显示值 table . 如果你设置 .a { display: block; } 您将看到,这些页边距实际上是折叠在一起的(至少在Firefox3.6中是这样)。