1. 程式人生 > 其它 >如何解決外邊距塌陷的問題?

如何解決外邊距塌陷的問題?

首先我們先看出現外邊距塌陷的三種情況:

1.當上下相鄰的兩個塊級元素相遇,上面的元素有下邊距margin-bottom,下面的元素有上邊距margin-top,則它們之間的垂直距離取兩個值中的較大者。

 1 <style>
 2   .box1 {
 3      width: 150px;
 4      height: 100px;
 5      margin-bottom: 20px;
 6      background-color: rgb(201, 239, 98);
 7   }
 8   .box2 {
 9      width: 100px;
10      height:
100px; 11 background-color: skyblue; 12 margin-top: 10px; 13 } 14 </style>
  <body>
15 <div class="box1"></div> 16 <div class="box2"></div>
  </body>

這時候兩個盒子之間的垂直距離不是30px,而是20px。

解決方法:

儘量只給一個盒子新增margin值

2.對於兩個巢狀關係的塊元素,如果父元素沒有上內邊距及邊框,父元素的上外邊距會與子元素的上外邊距發生合併,合併後的外邊距為兩者中的較大者。

<style>
        .box1 {
            width: 150px;
            height: 100px;
            margin-top: 20px; 
            /* border: 1px solid #000000; */
            background-color: red;
        }

        .box2 {
            width: 100px;
            height: 100px;
            /* border: 1px solid #000000; */
            background-color
: skyblue; margin-top: 10px; } </style> </head> <body> <div class="box1"> <div class="box2"></div> </div> </body>

這時候兩個盒子會發生合併,上外邊距為20px。

解決辦法:

①給父元素定義上邊框

②給父元素定義上內邊距

③給父元素新增 overflow:hidden;

④新增浮動

⑤新增絕對定位

3.如果存在一個空的塊級元素,border、padding、inline content、height、min-height都不存在,那麼上下邊距中間將沒有任何阻隔,上下外邊距將會合並。

<p style="margin-bottom: 0px;">這個段落的和下面段落的距離將為20px</p>

<div style="margin-top: 20px; margin-bottom: 20px;"></div>

<p style="margin-top: 0px;">這個段落的和上面段落的距離將為20px</p>

可以理解成中間div寬度為0且上下邊距融合,只取margin的最大值。