有没有一种方法可以完全禁用保证金折叠?我发现的唯一解决方案(名字叫“解压”)是使用1px边框或1px填充。我觉得这是不可接受的:无关的像素使计算复杂化,没有什么好的理由。有没有更合理的方法来阻止这种保证金崩溃
保证金崩塌主要有两种类型:
- 折叠相邻图元之间的边距
- 折叠父元素和子元素之间的边距
只有在后一种情况下,使用填充或边框才能防止折叠。此外,应用于父级的任何与默认值(可见)不同的溢出值)都将防止崩溃。因此,overflow:auto和overflow:hidden将具有相同的效果。使用hidden时的唯一区别可能是,如果父项具有固定高度,则隐藏内容会产生意外后果
一旦应用到父级,可以帮助修复此行为的其他属性包括:
浮动:左/右位置:绝对位置显示:内联块/flex
您可以在此处测试所有这些功能:http://jsfiddle.net/XB9wX/1/.
我应该补充一点,像往常一样,Internet Explorer是个例外。更具体地说,在IE 7中,当为父元素指定某种布局时,如宽度,边距不会折叠
资料来源:Sitepoint的文章折页