CSS中的外边距塌陷(Margin Collapse)是一种现象,主要发生在垂直方向上相邻的两个元素的外边距之间。当这种情况发生时,浏览器不会将两个外边距简单相加,而是将其合并为一个较大的外边距。这个合并后的外边距的大小通常是两个发生塌陷的外边距中的较大值。外边距塌陷主要涉及以下几种情况:
父子元素间的外边距塌陷:当一个块级元素(子元素)的上外边距与它的父元素的上外边距相邻时,如果父元素没有上边框、上内边距以及没有设置overflow属性为非visible值,这两个外边距会合并,实际表现出来的外边距通常是两者中的较大者。
相邻兄弟元素的外边距塌陷:当两个同级的块级元素在垂直方向相邻,它们的上外边距和下外边距也会发生塌陷。具体来说,如果上面元素的下外边距与下面元素的上外边距相邻,浏览器只会渲染一个外边距,其大小等于两个外边距中的较大值。
外边距塌陷不会发生在水平方向的外边距上,仅限于垂直方向。
为了避免外边距塌陷,可以采取以下几种策略:
外边距塌陷(Margin Collapse)主要涉及垂直外边距的计算规则,当两个或多个垂直外边距相邻时,它们并不会简单相加,而是按照以下规则进行计算决定最终的外边距值:
父元素的上外边距与子元素的上外边距相邻时,通常只保留两者中的最大值作为最终的外边距。如果父元素没有上边框或上内边距,也没有设置overflow属性为非visible,则会发生塌陷。
特别地,如果父元素没有上外边距,那么子元素的上外边距会“溢出”到父元素外面,看起来就像是父元素的上外边距。
总结起来,外边距塌陷的计算可以简化为: