如何禁用边距折叠?

有没有一种方法可以完全禁用保证金折叠?我发现的唯一解决方案(名字叫“解压”)是使用1px边框或1px填充。我觉得这是不可接受的:无关的像素使计算复杂化,没有什么好的理由。有没有更合理的方法来阻止这种保证金崩溃

保证金崩塌主要有两种类型:

  • 折叠相邻图元之间的边距
  • 折叠父元素和子元素之间的边距

只有在后一种情况下,使用填充或边框才能防止折叠。此外,应用于父级的任何与默认值(可见)不同的溢出值)都将防止崩溃。因此,overflow:autooverflow:hidden将具有相同的效果。使用hidden时的唯一区别可能是,如果父项具有固定高度,则隐藏内容会产生意外后果

一旦应用到父级,可以帮助修复此行为的其他属性包括:

  • 浮动:左/右
  • 位置:绝对位置
  • 显示:内联块/flex

您可以在此处测试所有这些功能:http://jsfiddle.net/XB9wX/1/.

我应该补充一点,像往常一样,Internet Explorer是个例外。更具体地说,在IE 7中,当为父元素指定某种布局时,如宽度,边距不会折叠

资料来源:Sitepoint的文章折页

发表评论