CSS中margin边界叠加问题及解决方案

边界叠加简介

边界叠加是一个相当简单的概念。但是,在实践中对网页进行布局时,它会造成许多混淆。
简单地说,当两个垂直边界相遇时,它们将形成一个边界。
这个边界的高度等于两个发生叠加的边界的高度中的较大者。

元素的顶边界与前面元素的底边界发生叠加 示例一

也就是说当一个元素出现在另一个元素上面时,第一个元素的底边界与第二个元素的顶边界发生叠加。

子元素的顶边界与父元素的顶边界发生叠加 示例二

当一个元素包含在另一个元素中时(假设没有填充或边框将边界分隔开),它们的顶和/或底边界也发生叠加,
如果给父元素设置边框border或padding,此叠加不会发生。


元素的顶边界与底边界发生叠加 示例三

尽管初看上去有点儿奇怪,但是边界甚至可以与本身发生叠加。假设有一个空元素,它有边界,但是没有边框或高度及内间距。
在这种情况下,顶边界与底边界就碰到了一起,它们会发生叠加,如果这个边界碰到另一个元素的边界,它还会发生叠加


解决方法

边界叠加的大多数问题可以通过添加透明边框或1px的补白来修复。其它补充解决方案:

1.外层 padding

2.透明边框 border:1px solid transparent;

3.绝对定位 postion:absolute;

4.外层DIV overflow:hidden;

5.内层DIV 加 float:left; display:inline;


原文地址: http://zyj1022.github.io/posts/frontend/2017/margin-margin.html

转载时必须以链接形式注明原始出处及本声明