Chrome中的垂直边距不折叠

Posted

技术标签:

【中文标题】Chrome中的垂直边距不折叠【英文标题】:Vertical margin not collapsing in Chrome 【发布时间】:2013-01-02 09:04:24 【问题描述】:

在这个小提琴中,http://jsfiddle.net/munkii/tpQQN/ 我通过 intro 类在段落元素上有一些边距底部,通过 what-is 类在列表项上有一些边距底部。

article.about .what-is 
    height: 100%;
    margin-bottom: 34px;
    padding-right: 34px;
    width: 600px;


article.about p.intro 
    font-weight: bold;
    margin-bottom: 43px;

我已经从我的工作中删除了不必要的边距,但我仍然想知道为什么 Chrome 没有折叠垂直边距而 FF 和 IE 这样做。

有什么想法吗?

【问题讨论】:

您是否注意到当您从 .what-is li 项目中删除 height:100% 时它消失了? 【参考方案1】:

这只能是一个错误。

根据http://www.w3.org/TR/CSS2/box.html#collapsing-margins,这些边距应该像我们在这种情况下一样折叠:

如果父级具有“自动”计算高度,则最后一个流入子级的下边距和其父级的下边距

.what-is'高度应该被计算为auto,因为

如果没有明确指定包含块的高度(即,它取决于内容高度),并且该元素不是绝对定位的,则该值计算为'auto'。

(http://www.w3.org/TR/CSS2/visudet.html#the-height-property)

最奇怪的是计算出的高度确实是auto,但Chrome似乎并没有做到它所暗示的。

正如 Alex 的评论所说,您可以删除 height: 100%; 规则,该规则允许元素考虑其默认高度。 auto 就是这样。

【讨论】:

【参考方案2】:

MatTheCat 说得好。

会不会是因为你的身高是100%,火狐把包含的Div的高度作为高度。 Chrome 似乎将 p 标签上的边距底部包含在包含 Div 的高度中。

如果这有任何意义......

【讨论】:

以上是关于Chrome中的垂直边距不折叠的主要内容,如果未能解决你的问题,请参考以下文章

CSS边距不折叠

为啥子垂直边距不扩展父容器?

ConstraintLayout 的问题 - 垂直边距不起作用

Firefox 和 chrome 之间的边距不兼容

以编程方式设置边距不起作用

CollectionView 边距不一样