CSS崩溃边际有什么意义?

Tom*_*Tom 68 css w3c

CSS2盒子模型告诉我们相邻的垂直边距会崩溃.

我发现它很烦人,是许多设计错误的根源.我希望通过理解折叠边距的目的,我将了解何时使用它们以及如何在不需要它们时避免使用它们.

这个功能的目的是什么?

Vot*_*ple 88

"margin"的一般含义不是传达"将此移动10px"而是"在此元素旁边必须有10px的空白空间".

我总是发现这是最容易用段落概念化的.

如果你只给出段落margin-top: 10px并且没有任何其他元素的边距,那么一系列段落会间隔得很漂亮.但是当然,在段落下放置另一个元素时会遇到麻烦.两个人会碰.

如果边距没有崩溃,你会毫不犹豫地添加margin-bottom: 10px到你以前的代码中,因为任何一对段落都会间隔20px,而段落只会与其他元素分开10px.

因此,纵向利润率下降.通过添加10px的顶部和底部边距,您会说,"我不关心任何其他元素的边际规则.我要求在每个段落的上方和下方至少有10px的填充."

  • 你的意思是“除非他们在表格行内”。表格行不是块级元素;他们有一些独特的规则。有关更完整的解释,请参阅 http://stackoverflow.com/questions/136727/why-doesnt-a-tables-margin-collapse-with-an-adjacent-p。 (3认同)
  • 对 - 它们会崩溃 - 除非它们的 dom 级别不同。例如,尝试折叠 [this](http://jsfiddle.net/gDuzC/2/) 恕我直言:这真的很烦人 (2认同)
  • 为该元素添加`margin-top`怎么样? (2认同)