1つの理由:
1.兄弟ブロック間で、マージン属性の上部マージンと下部マージンが重複することが多いため、加算する代わりに、大きい方の値が優先されます。
2.親ブロックと子ブロックの間で、子の上マージンと下マージンが親の上マージンと下マージンと重なり、加算ではなく、大きい方の値が優先されます。
2つのソリューション:
1.親要素または子要素に浮動位置または絶対位置を使用します(浮動位置または絶対位置は余白の折りたたみに関与しません)
2.親オーバーフロー:非表示;
3.親設定パディング(空白以外の折りたたみ条件の解除)
4.親セットの境界線(空白以外の折りたたみ条件を破棄)
フロートをクリアする前:フロートをクリアした後:
コード:
<!DOCTYPE html><html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title>
<style>
/* 解决嵌套的父子元素margin共享办法 */
/* 设置padding-top: 1px; */
/*设置 border: 1px solid blueviolet; */
/* 给父级设置overflow: hidden; */
/*设置浮动解决盒子共享 float: left; */
/* 设置绝对定位position: absolute; */
.a {
width: 200px;
height: 100px;
background-color: #096; ;
}
.b {
width: 200px;
height: 50px;
background-color: red;
margin-top: 20px;
}
</style>
</head>
<body>
<div class="a"> </div>
<div class="b"> </div>
</body>
</html!