<div id="parent"> <div id="son"></div> </div> <style> body{ margin: 0; padding: 0; background-color: grey; } #parent{ width: 200px; height: 200px; background-color: red; } #son{ width: 100px; height: 100px; background-color: green; margin-top: 50px; } </style>
頁面效果:
這是margin外邊距坍塌致使的,按照css規範,兩個相鄰的元素之間的margin值會共用較大的那一個,而若是沒有上邊框或上內間距,嵌套的元素之間和同級的元素同樣知足使用這個規範的條件,父元素會擁有子元素同樣的上外邊距。要解決這個問題其實也很是簡單,這裏給出四種不一樣的解決方法。css
<div id="parent"> <div id="son"></div> </div> <style> body{ margin: 0; padding: 0; background-color: grey; } #parent{ width: 200px; height: 200px; background-color: red; overflow: hidden; } #son{ width: 100px; height: 100px; background-color: green; margin-top: 50px; } </style>
效果如圖:
html
<div id="parent"> <div id="son"></div> </div> <style> body{ margin: 0; padding: 0; background-color: grey; } #parent{ width: 200px; height: 200px; background-color: red; border-top: 1px solid transparent; } #son{ width: 100px; height: 100px; background-color: green; margin-top: 50px; } </style>
效果如圖:
git
<div id="parent"> <div id="son"></div> </div> <style> body{ margin: 0; padding: 0; background-color: grey; } #parent{ width: 200px; height: 200px; background-color: red; float: left; } #son{ width: 100px; height: 100px; background-color: green; margin-top: 50px; /* float: left; */ /* 浮動加在子元素上也能夠 */ } </style>
效果如圖:
github
<div id="parent"> <div id="son"></div> </div> <style> body{ margin: 0; padding: 0; background-color: grey; } #parent{ width: 200px; height: 200px; background-color: red; padding-top: 1px; } #son{ width: 100px; height: 100px; background-color: green; margin-top: 50px; } </style>
效果如圖:
學習
以上爲所有內容,感謝閱讀。
本博文僅爲學習記錄和分享交流,若有錯漏,還請幫忙指出,也歡迎更多補充,不勝感激。spa
GitHub地址:https://github.com/ljxlijiaxin.code