外边距折叠

  • Post author:
  • Post category:其他


原文链接:

外边距折叠



外边距折叠问题



外边距折叠的概念

在CSS中,两个或多个

毗邻



普通流

中的盒子(可能是父子元素,也可能是兄弟元素),在

垂直方向

上的外边距会发生叠加,这种形成的外边距称为外边距叠加。



普通流概念:

只要不是float、absolute、root element时就是普通流。



外边距折叠的产生条件

*都属于普通流的块级盒子且都参与到相同的块级格式化上下文中;

*没有被padding、border、clear和line box 分隔开

*都属于垂直毗邻盒子边缘;

(1)盒子的top margin和它的第一个普通流子元素的top margin

(2)盒子的bottom margin和它的下一个普通流兄弟的top margin

(3) 盒子的bottom margin和它父元素的bottom margin

(4) 盒子的top margin和bottom margin,且没有创建一个新的块级格式上下文,且有被计算为0的min-height,被计算为0或auto的height,且没有普通流子元素



外边距折叠的结果

1.如果外边距都为正数,折叠结果为大的正数;

2.如果外边距一个为正数一个为负数,折叠结果为最大正边距和最小负边距的和;

3.如果外边距都为负数,折叠结果为最小负边距的值;



如何避免外边距折叠

避免外边距折叠的方法:

1.给父元素添加border

2.给父元素增加padding

3.父子元素之间添加触发BFC的元素