有两个嵌套的DIV盒子,父盒子里面有一个子盒子,想让子盒子和父盒子上边距之间有一段间距,但是给子级元素添加的外边距没有效果,效果显示在了父级元素身上。
例如:
<body> <div class="father"> <div class="son"></div> </div> </body>
<style> * { margin: 0; padding: 0; } .father { width: 200px; height: 200px; background-color: cyan; } .son { margin-top: 30px; width: 100px; height: 100px; background-color: darkgreen; } </style>
常见的解决盒子塌陷的方法有三种,如下所示:
<style> * { margin: 0; padding: 0; } .father { padding-top: 30px; width: 200px; height: 200px; background-color: cyan; } .son { /* margin-top: 30px; */ width: 100px; height: 100px; background-color: darkgreen; } </style>
.father { padding-top: 30px; width: 200px; height: 170px;//200px-30px=170px background-color: cyan; }
-2.给父盒子设置盒模型为border-box。
.father { padding-top: 30px; width: 200px; height: 200px; background-color: cyan; border-sizing:border-box; }
-二、给父级元素溢出部分添加隐藏样式overflow:hidden。
.father { width: 200px; height: 200px; background-color: cyan; overflow: hidden; }
-三、给父级盒子加上边框border。
.father { width: 200px; height: 200px; background-color: cyan; border: 1px solid black; } </style>
.father { width: 198px; height: 198px; background-color: cyan; border: 1px solid black; box-sizing: border-box; }
-2.设置盒模型为box-sizing:border-box;
.father { width: 200px; height: 200px; background-color: cyan; border: 1px solid black; box-sizing: border-box; }
前面在整理CSS盒子浮动系列还总结了由于浮动元素引起的盒子塌陷问题,主要策略是:闭合浮动。详情见
清除浮动引起的盒子高度塌陷问题解决办法