CSS親要素のマージンとサブセット要素のマージンの間のオーバーラップ

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!


おすすめ

転載: blog.csdn.net/GengFuGuo/article/details/108481874