在像这样的简单示例中,子边距不会影响父级高度:
css lang-css prettyprint-override">.parent{ background:
black;
}
.child{
background: LightBlue;
margin: 20px;
}
<div class="parent">
<div class="child">Some text...</div>
</div>
JSFiddle:http://jsfiddle.net/k1eegxt3/
默认情况下,子页边距不会分别影响父级高度和父级尺寸。通常,可以通过在父元素中添加边距可以“推”到的内容来轻松修复,例如,向父元素添加填充或边框
.parent{ background:
black;
padding: 1px; /* PADDING ADDED */
}
.child{
background: LightBlue;
margin: 20px;
}
JSFIDLE(JSIDLE):http://jsfiddle.net/fej3qh0z/
我想知道为什么会这样,而不仅仅是它是如何被修复的。
有人能解释一下,最好参考规范,为什么会这样?
添加显示:flex;
到父元素中,根据需要调整flex方向、对齐和对齐,但边距随您的需要显示。
你要找的是所谓的边际崩溃。边距塌陷的一个原因是,空元素不会添加垂直边距空间,也会使元素间距均匀,而无需重置边距。
根据规范:
注意:块布局中的相邻边距可能会折叠。有关详细信息,请参阅CSS2§8.3.1折叠边距。此外,与碎片断点相邻的边距有时会被截断。有关详细信息,请参阅CSS碎片3§5.2断点相邻边距。
该引文中的第一个链接是:
在CSS中,两个或多个框的相邻边距(可能是同级的,也可能不是同级的)可以组合成一个边距。按这种方式合并的边距称为折叠边距,由此产生的合并边距称为折叠边距。
相邻的垂直边距塌陷,除了:
您可以向父元素添加溢出属性来修复此问题(可以是自动的、隐藏的,也可以根据需要进行其他操作)。
JSFIDLE示例:http://jsfiddle.net/k1eegxt3/2/
问题内容: 我已经在这个问题上寻找了一段时间,但没有找到直接的答案。在元素上添加边距顶部时,在我的情况下,它通常与标题一起发生。在许多情况下,与父母共享边际收益。 HTML CSS 前面的代码的结果还将为div添加margin-top,就像我们有以下内容一样: 解决此问题的一种方法是添加 到父项,在这种情况下,div css具有: 尽管前面的示例解决了该问题,但是对我来说还不清楚 为什么? 。这与
问题内容: 我试图了解什么对我来说似乎是意外的行为: 我在容器内有一个最大高度为100%的元素,该元素也使用最大高度,但是,出乎意料的是,子代溢出了父代: 但是,如果给定父级的显式高度,则此问题已解决: 有谁知道为什么孩子在第一个例子中不尊重父母的最大身高?为什么需要一个明确的高度? 问题答案: 当您指定的百分比上一个孩子,这是父母的实际高度的百分比,而不是父母的,奇怪的。同样适用于。 因此,如果
问题内容: 我通过设置找到了一种使div容器至少占据整个页面高度的方法。但是,当我添加一个嵌套div和set时,它不会扩展到容器的高度。有办法解决吗? 问题答案: 这是一个已报告的Webkit(chrome /safari)错误,具有最小身高的父母的孩子不能继承height属性: : 显然Firefox也受到了影响(目前无法在IE中进行测试) 可能的解决方法: 添加位置:相对于#containme
问题内容: 我正在使用一个非常精美的webkit过滤器来使背景图像变成灰度,然后将鼠标悬停在图像上变成彩色。 这是过滤器 如您所见,甚至具有“过渡”属性,因此图像具有平滑的淡入淡出过渡到全彩色的效果。我遇到的问题是我将其应用于div也会影响位于div内的子文本,并将文本也变为灰度。这是一个问题,因为即使未悬停在文本上,文本也必须为白色。 我试着在子文本上将过滤器与另一个过滤器取反,但这似乎不起作用
问题内容: 当具有边距的元素包含在另一个元素中时,父级不会始终包裹/包含该边距。 许多事情将导致父母控制孩子的保证金: (这只是经过一点测试,毫无疑问,还有更多。) 我认为这与利润下降有关,但是: W3C规范页面没有此类行为的描述。 这里没有重叠的边距。 在此问题上,所有浏览器的行为似乎都是一致的。 该行为受到与边距无关的触发器的影响。 根据逻辑,默认元素应包含与溢出设置为自动元素不同的材料? 为
问题内容: 我有一排2列。在这些列中,我有一个标题,内容和列表。它们具有不同的内容长度。 我要实现的是,该列表在同一行上彼此相邻,而不会破坏引导程序移动优化。 我首先尝试了3个不同的行,但是当列断开时,内容不再属于彼此。没有JavaScript,有没有我需要的解决方案?也许以某种方式使用flexbox? 这是我当前的代码: 问题答案: 为了能够实现这一目标,而无需使用脚本,所有项目(,,,)需要