目录

CSS-中-margin-的margin塌陷问题

CSS 中 margin 的margin塌陷问题

一,什么是外边距合并​

外边距合并指两个或多个相邻的外边距(margin)在垂直方向上会合并为一个外边距,其大小为这些相邻外边距中的最大值,而非它们的总和。

二,这种合并现象主要发生在以下几种情况:​

相邻兄弟元素​

当两个或多个相邻的兄弟元素(即在 DOM 树中处于同一层级且未被其他元素分隔)具有垂直方向的外边距时,外边距会合并。例如:​


.element1 {​

margin-bottom: 20px;​

}​

.element2 {​

margin-top: 30px;​

}​

在上述代码中,.element1的margin-bottom和.element2的margin-top会合并,最终它们之间的间距为 30px,而不是 20px + 30px = 50px。​

父元素与第一个 / 最后一个子元素​

<!DOCTYPE html>​
<html lang="en">​
<head>​
<meta charset="UTF-8">​
<meta name="viewport" content="width=device-width, initial-scale=1.0">​
<style>​
.father{​
width: 500px;​
height: 500px;​
background-color: red;​
/* 这里没有设置border-top、padding-top,overflow为默认的visible */​
}​
.son{​
width: 300px;​
height: 200px;​
background-color: blue;​
margin-top: 100px;​
}​
</style>​
<title>Document</title>​
</head>​
<body>​
<div class="father">​
<div class="son"></div>​
</div>​
</body>​
</html>​

​结果:子元素的margin被父元素吞噬,父元素上方将出现空白!

//图片开始

https://i-blog.csdnimg.cn/direct/fd3b3c4f781a4fac949fbeaf81b6c1ae.png

//图片结束

二,如何避免外边距合并​

可以为父元素加上属性:overflo:hidden;