CSS折叠边距的意义是什么?


79

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

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

此功能的目的是什么?


3
相邻的垂直边距崩溃
山姆

Answers:


100

“边距”的一般含义不是传达“将其移动10像素”,而是“此元素旁边必须有10像素的空白空间”。

我一直发现这是最容易用段落概念化的。

如果您只是给出段落margin-top: 10px而在其他任何元素上都没有空白,则一系列段落之间的间隔会很漂亮。但是,当然,在段落下放置另一个元素时会遇到麻烦。两者会碰触。

如果页边距没有塌陷,您将不愿意添加margin-bottom: 10px到以前的代码中,因为这样一来,任何一对段落之间的间距都为20px,而段落与其他元素之间的间距仅为10px。

因此垂直边距崩溃。通过添加10px的顶部和底部边距,您说的是:“我不在乎其他元素具有什么边距规则。我要求在每个段落的上方和下方至少填充10px。”


1
+1。CSS外部也适用相同的逻辑。例如,在Microsoft Word中,如果标题后的空白为12px,段落前的空白为6px,如果段落在标题后,则空白为12px,而不是18px。
阿森尼·穆尔琴科

1
是的-他们崩溃了-除非他们不是同一级的dom。例如,尝试简单地折叠imho:这确实很烦人
Toskan 2012年

1
您的意思是“除非它们在表行中”。表行不是块级元素;他们有一些独特的规则。请参阅stackoverflow.com/questions/136727/…以获得更完整的说明。
VoteyDisciple 2012年

2
还要margin-top为该元素添加呢?
MinhNghĩa19年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.