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

当我向嵌套DIV添加边距时,它会导致父DIV接收边距,除非我给父DIV一个边框。为什么?

  •  4
  • Jazzy  · 技术社区  · 15 年前

    有人见过这个吗?这是这么多年来第二次出现,我不确定解决它的“正确”方法。

    我可以用填充在孩子身上达到同样的效果,但这毫无意义。

    在Safari/FF中进行测试。

    3 回复  |  直到 15 年前
        1
  •  4
  •   Nikita Rybak    15 年前

    我通常通过设置 display: inline-block 在outer div上。它将使outer div完全占据显示其内容所需的空间。

    An example ,显示差异。

        2
  •  4
  •   Moses    15 年前

    这就是所谓的边际崩溃。当上下边距直接接触(不被任何东西分开,如边框或换行符)时,边距将塌陷为单个边距。这不是虫子。点击此处了解更多信息 SitePoint

        3
  •  3
  •   meder omuraliev    15 年前

    听起来像是自然的边缘塌陷。这是一本很好的读物:

    http://www.andybudd.com/archives/2003/11/no_margin_for_error/

    有很多方法可以解决利润率崩溃的问题。一种方法是添加边框 更长时间的崩溃。

    另一种阻止页边距折叠的方法是更改 CSS2规范解释了绝对和相对位置框的边距 不要崩溃。另外,如果浮动一个框,它的边距将不再折叠。并不总是这样 你遇到了不需要的利润率崩溃的问题,这可能是一个选择。