margin合併css
當兩個元素在垂直方向並列,分別設置margin值時會發生一個margin合併的現象html
舉個例子,有兩個div,垂直並列,box1設置margin-bottom:20px,box2設置margin-top:50px,spa
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test</title> <style type="text/css"> *{ margin:0; padding: 0; } div{ width: 50px; height: 50px; } #box1{ margin-bottom: 20px; background: red; } #box2{ margin-top: 50px; background: blue; } </style> </head> <body> <div id="box1"></div> <div id="box2"></div> </body> </html>
按照通常的思惟,這兩個div之間的距離就應該是70px,事實並不是如此,兩個div之間的距離只有50px,由於兩個div的margin重疊,它會取最大值3d
通常來講margin合併不常見,由於只需設置一個div的margin來達到兩者之間的距離就能夠了code
margin塌陷htm
margin塌陷很常見,存在於嵌套關係的盒子之間。blog
有兩個div,box1包含box2,給box2一個margin-top:20px,讓box2和box1之間產生20px的距離it
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test</title> <style type="text/css"> *{ margin:0; padding: 0; } #box1{ width: 100px; height: 100px; background: red; } #box2{ width: 50px; height: 50px; margin-top: 20px; background: blue; } </style> </head> <body> <div id="box1"> <div id="box2"></div> </div> </body> </html>
結果會發現box1和box2沒產生距離,反而是box1帶着box2離頁面頂端20pxclass
解決辦法:test