显示的奇怪边距问题:内联块子

adr*_*ift 3 html css

这是小提琴

当我设置#two为内联块时,它从中减去16 px的上/下边距<p>并将其添加到divs内容框高度,因此它变为52px而不是20px ..为什么会这样?

jam*_*ase 6

您所看到的是保证金崩溃的一个奇怪案例.

如果父元素和子元素是块元素,并且没有任何东西(填充,边框等)将它们的垂直边距分开,那么这些边距将会崩溃.折叠边距是指未添加两个相邻边距(如您所料),而是显示两者中较大的边距.在父子案例中,折叠的保证金最终在父母之外.您可以在上面链接的" 父级"和"第一个/最后一个孩子 "部分下阅读更多详细信息.

将父项设置为inline-block或将其设置float:left;为其他项(请参阅链接以获取更完整的列表)将阻止边距折叠.这会导致我们习惯的行为:孩子的边距将出现在父母的内部,增加其总高度,并且还会显示父母的边距.