css中子元素設置margin-top為什么影響了父元素


本文介紹了css中子元素設置margin-top為什么影響了父元素,分享給大家,具體如下:

 

 1

 

 2

<style type="text/css"> 
    *{
        margin: 0px; padding: 0px; 
    }
    .show{
        margin: 0px auto;
        width: 200px;
        height: 100px;
        background-color: #999999;
    }
    .show h2{
        margin-top: 50px;
        cursor: pointer;
    }
</style>
 
<body>
    <div class="show">
       <h2>crystal</h2>
    </div>
</body>

兩個div,子元素div設置了margin-top后,發現並沒有跟想象的一樣,而發現父元素產生了間距。

如上圖。

原理:margin折疊

在css2.1盒模型仲規定的內容

 

 

因為嵌套也屬於毗鄰,所以在樣式表中優先級更高子元素的margin會覆蓋外層父元素定義的margin。

父元素的第一個子元素的上邊距margin-top如果碰不到有效的border或者padding.就會不斷一層一層的找自己 “領導”(父元素,祖先元素)的麻煩。只要給領導設置個有效的 border或者padding就可以有效的管制這個目無領導的margin防止它越級,假傳聖旨,把自己的margin當領導的margin執行。

解決辦法:

1、父元素或者子元素使用浮動或者絕對定位。
2、父級設置overflow:hidden
3、父級設置padding(破壞非空白的折疊條件)
4、父級設置border


免責聲明!

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



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