父子div margin重疊問題


前段時間朋友做項目遇到一個問題,說是父子div,想讓子div下移50px,我隨口就說“直接margin-top就可以了”,結果,你們沒猜錯,打臉了,好痛!

這是我自己試了一遍的代碼:

<body>
  <div class="big">
    <div class="small"></div>
  </div>
 </body>

以及樣式:

<style>
    body{
        margin:0px;
        padding:0px;
    }
    .big{
        width:400px;
        height:400px;
        background:#ccc;
    }
    .small{
        width:200px;
        height:200px;
        background:#ff0000;
     margin-top:50px; }
</style>

結果出來就變成這樣了

這是什么鬼?我設置的只是子div啊,為什么父子一塊移動了?最后經過多方百度得知原因:

  所有毗鄰的兩個或者多個盒元素的margin會合並為一並共享之。毗鄰的意思是同級或嵌套的盒元素,並且他們之間沒有非空內容、padding或者border分隔。

看到這個就可以想到幾個解決的方法了,一個是增加一個子元素的同級元素並放在該元素之前,也就是:

<div class="big">
    <div class="add">增加的內容</div>
    <div class="small"></div>
</div>

還有就是給父元素增加padding屬性或者border屬性,給子元素加是沒有效果的。

當然還有其他的方法,比如父元素增加overflow:hidden屬性,給父元素增加浮動或者position:absolute屬性也是可以的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM