元素的外邊距margin重疊問題

第一種 ——經(jīng)典的相鄰marign重疊的問題

當(dāng)一個元素出現(xiàn)在另一個元素上面時,第一個元素的下外邊距與第二個元素的上外邊距會發(fā)生合并。

邊距重疊計算方式
a、全部都為正值,取最大者;
b、不全是正值,則都取絕對值,然后用正值減去最大值;
c、沒有正值,則都取絕對值,然后用0減去最大值。

<style>
    *{
        margin:0;
        padding: 0;
    }
    .divout{
        width: 100px;
        height: 100px;
        background: yellow;
        margin-bottom: 50px;
        border: 1px solid black;
    }
    .divout1{
        width:50px;
        height: 50px;
        background: yellow;
        margin-top: 80px;
            /*float:left;*/
        /*position:absolute;*/
        border: 1px solid black;
    }
</style>
<body>
    <div class="divout">        
    </div>
    <div class="divout1">       
    </div>
</body>
邊距重疊.png

解決辦法:

1、 將元素設(shè)置為浮動 float:left;
2、 在設(shè)置margin-top/bottom值時統(tǒng)一設(shè)置上或下
3、 元素的position的值為absolute/fixed

第二種 ——元素和父元素margin值問題

父元素?zé)o border、padding、inline content 、 clearance時,子元素的margin-top/bottom會與父元素的margin產(chǎn)生重疊問題。

<style>
    *{
        margin:0;
        padding: 0;
        color: black;
    }
    #parrent{
        width:300px;
        height:150px;
        margin-top: 20px;
        background:teal;
    }
    #box1{
        width:100px;
        height:100px;
        background:aqua;
        margin:100px 0;
    }
</style>
<body>
    <div id="parrent">
        <div id="box1">
        我是box1
        </div>
            我是內(nèi)容
    </div>
</body>
子元素沒設(shè)置margin值.png
子元素設(shè)置margin值.png

解決辦法

1、外層元素padding代替
2、內(nèi)層元素透明邊框 border:1px solid transparent;
3、內(nèi)層元素絕對定位 postion:absolute:
4、外層元素 overflow:hidden;
5、內(nèi)層元素 加float:left;或display:inline-block;

6、內(nèi)層元素padding:1px;
7、外層元素有邊框
8、內(nèi)層元素不是第一個元素;

注釋:只有普通文檔流中塊框的垂直外邊距才會發(fā)生外邊距合并。行內(nèi)框、浮動框或絕對定位之間的外邊距不會合并。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容