负底边距有啥影响

Posted

技术标签:

【中文标题】负底边距有啥影响【英文标题】:What's the impact of the negative bottom margin负底边距有什么影响 【发布时间】:2018-01-23 06:38:27 【问题描述】:

首先,这里是html

<div class="first">
    <div class="second">
        <div class="third">
           Hello, margin collapsing!
        </div>
    </div>
</div>

然后是 CSS:

.first 
  background-color: red;
  padding: 20px;


.second 
  background-color: green;
  margin-bottom: -20px;


.third 
  background-color: yellow;
  margin-bottom: 20px;

在最终布局中,第三个 div 看起来没有下边距。我知道这一定是下边距为负的第二个 div 的效果。但我不明白它是如何工作的。你能解释一下吗?

【问题讨论】:

在块元素上可以使用负边距。第一个是填充的,第二个是填充的,所以仍然可以。在第二个中您设置了负边距,在第三个中您添加了它,因此完全没有必要。检查将 30 添加到第三个时会发生什么:jsfiddle.net/sm4Lf591 您示例的文本内容已经提到了答案 - 折叠边距。 w3.org/TR/CSS21/box.html#collapsing-margins 您应该查找“边距折叠”。信息量很大。 【参考方案1】:

Padding - 简单地说,在你的元素内部创建一个不可见的边框。您提供元素内部的空间(围绕内容)。

.first 
  background-color: red;
  padding: 20px;

所以你在这里告诉你,任何第一个内容都必须距离每一边 20px(每一边因为你没有提供任何像 padding-top 这样的声明)

Margin - 另一方面,它创造了相反的效果,它在你的元素周围创造了空间。

.second 
  background-color: green;
  margin-bottom: -20px;

所以这个说第二块在外面的底部有一个空间。它定义为负数,这意味着以下项目浮动在您的元素中。

这解释得很清楚:https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model

【讨论】:

以上是关于负底边距有啥影响的主要内容,如果未能解决你的问题,请参考以下文章

html中margin外边距和padding内边距有啥用? 一般在啥情下使用?只对块级标签都有用还是只对div?

IE6 + 7 - 双底边距

OracleParameter.Size 有啥影响?

“影响等级从 2 变为 3”是啥意思?影响级别 2 和级别 3 有啥区别?

C# 中的 Thread.Sleep(1) 有啥影响?

使用不安全代码有啥影响