盒模型:外边距叠加和外边距为负值

盒模型乍一看很简单,无非就是内容、内边距、边框和外边距。但是写起代码来你会发现并不简单,很多地方都很模糊,特别是外边距为负值的时候。

这篇文档主要说明两个问题:

1.外边距叠加

2.外边距为负值

首先说明两个基本的要点:

1.如果给元素添加背景,背景会应用于内容和内边距组成的区域。

2.widthheight是内容区域的宽度和高度。增加内边距、边框和外边距不会影响内容区域的尺寸,只会增加元素框的总尺寸。

特别说明,如果将元素的box-sizing属性设置为"border-box",则widthheight表示的是内容、内边距和边框组成区域的高度和宽度。所以增加外边距对内容区域的尺寸没有影响,而增加内边距和边框会导致内容区域的尺寸减小。

现在开始讨论第一个问题:外边距叠加

外边距叠加是指当两个或更多垂直外边距相遇时,外边距的高度等于这几个外边距的高度中的较大者。这就是外边距叠加的情况,并且外边距叠加只发生在垂直外边距上。

外间距叠加有三种情况:

l 元素自身叠加

l 相邻元素叠加

l 包含元素叠加

元素自身叠加

如果有一个空元素,只有外边距而没有边框或内边距,顶外边距和底外边距就碰到一起发生叠加。

相邻元素叠加

当一个元素出现在另一个元素上面是,上面那个元素的底外边距与下面那个元素的顶外边距就会发生叠加。

包含元素叠加

当一个元素包含在另一个元素中时,如果没有内边距或边框将外边距隔开,它们的顶/底外边距也会发生叠加。

外边距叠加有什么用呢?一个最简单的例子就是段落。如果没有外边距叠加,那么从第二个段落开始,段落间距就会是第一个段落上面的空间的两倍。

最后的说明:只有普通文档流中块框的垂直外边距才会发生外边距叠加。行内框、浮动框或绝对定位框之间的外间距不会叠加。

接下来讨论外边距为负值的情况:

举个具体的例子说明,假如margin-right: -150px;

分两步理解:

1.假设margin-right: 0;,内容区域不变

 

2.此时加上margin-right: -150px;布局变成

 

所以margin-right取负值就是右边的区域变成外边距,以容纳其他元素(假设是元素B)。需要注意的是如果不正确设置该元素中的子元素的外间距,就会与B元素发生重叠。

外间距设置为负值主要是可以用于生成边栏。

额外说明:只有外边距才可以是负值,内边距不允许为负值。

原文地址:https://www.cnblogs.com/web100/p/css-box-dis.html