在标准的文档流中,竖直方向(注意:左右方向是不会出现塌陷的现象。)的margin会出现叠加现象,即较大的margin会覆盖掉较小的margin,竖直方向的两个盒子中间只有一个较大的margin,这就是margin的塌陷现象。
外边距合并就是:当两个垂直外边距相遇时,它们将形成一个外边距。合并的外边距的高度等于两个发生合并的外边距的高度中的较大者。
两个元素是父子关系,见如下代码:
1 |
|
两个元素是兄弟元素,见如下代码所示:
1 |
|
父子关系的盒子解决办法:
a. 给父盒子加一个边框;
b. 给父元素添加上下的padding;
c. 溢出隐藏,给父元素添加overflow:hidden;
d. 给父元素添加浮动(注意:不推荐使用,因为会带来未知的错误);
e. 给父元素添加position:fixed;
f. 给父元素设置display:table;
g. 给父元素设置伪元素(这是我们推荐的解决办法)。
下面代码将上面所有的方法都举了一个例子来列举出来:
1 |
|
兄弟关系的解决办法:
a. 给上面的盒子加个margin-bottom(这个距离等于两个盒子之间的距离)或者给下面的盒子加个margin-top(这个距离等于两个盒子之间的距离)。(推荐使用)
b. 使用bfc来进行一个解决,关于bfc我在以前是写过的,在这里就不做相关介绍了,如果对bfc有疑惑的同学可以去网上搜索搜索。使用bfc解决:将兄弟元素分别作为子元素放在块级元素内,然后将其父级元素的渲染规则该为BFC。(不推荐使用)
下面代码将上面所有的方法都举了一个例子来列举出来:
1 |
|