【发布时间】:2014-01-08 11:40:40
【问题描述】:
我已经在这个问题上寻找了一段时间,但没有找到直接的答案。 在向元素添加边距顶部时,在我的情况下,它主要发生在标题上。在许多情况下,margin-top 与父级共享。
HTML
<div>
<h1>My title</h1>
</div>
CSS
div{
padding:20px;
}
h1{
margin-top: 20px;
}
前面代码的结果也会给 div 添加一个 margin-top,就好像我们有下面这样:
div{
padding:20px;
margin-top:20px; /*this one is implemented by the browser, not written on the code*/
}
解决此问题的一种方法是将 overflow:auto 添加到父级,在这种情况下,div css 具有:
div{
padding:20px;
overflow:auto;
}
虽然前面的例子解决了问题,但我不清楚WHY???。 这与 "collapsing margins" 有关,其中一个边距显然与父级的边距相结合。但是为什么????
我们如何知道父级何时会折叠子级的边距,何时不会,块的此属性的目的是什么,或者它是一个错误?
这是问题的JSFiddle demo。
这是解决方案的JSFiddle demo
谢谢。
【问题讨论】:
-
我会对这个问题的答案感兴趣。我也观察到了这种行为,这真的让我很烦!
-
嗨@AndréFigueiredo,感谢您的链接,但我没有看到我们为什么会有这种行为的解释。我知道如何解决它,但我不清楚为什么。谢谢
-
这就是我喜欢这样做的原因,
position: relative; top: size goes here;。您无需担心margin行为的时髦方式。 (可能只是我,但我从不喜欢使用margin)