一、现象解释
指对于嵌套关系的块元素,若父子双方均有外边距则父元素会塌陷较大的外边距(通俗解释:就是父子均按照最大的外边距进行移动)
tips:谁大塌陷多少
eg:
<style>
.father{
width:500px
height:500px
background-color:rgb(15,213,240)
margin-top:100px
}
.son{
width:300px
height:300px
background-color:rgb(14,71,226)
margin-top:50px
}
</style>
<body>
<divclass="father">
<divclass="son">
</div>
</div>
</body>
二、解决方案
1.加一个透明的边框
即:加一个border: 1px solid transparent
<style>
.father{
width:500px
height:500px
background-color:rgb(15,213,240)
margin-top:100px
border:1pxsolidtransparent
}
.son{
width:300px
height:300px
background-color:rgb(14,71,226)
margin-top:50px
}
</style>
<body>
<divclass="father">
<divclass="son">
</div>
</div>
</body>
2.给父元素加一个内边距
即:padding:1px
<style>
.father{
width:500px
height:500px
background-color:rgb(15,213,240)
margin-top:100px
padding:1px
}
.son{
width:300px
height:300px
background-color:rgb(14,71,226)
margin-top:50px
}
</style>
<body>
<divclass="father">
<divclass="son">
</div>
</div>
</body>
3.给父元素加一个overflow:hidden
4.其他
CSS结构好的话,没有必要使用过多的类或者标识选择符。这是因为你可以指定在选择符内的选择符,而不必使用CSS嵌套。(或者更好的说法,上下文选择符--译者著)
1、比如:
ExampleSourceCode#top{ background-color:#ccc padding:1em } #toph1{ color:#ff0 } #topp{ color:red font-weight:bold }
2、这就减去不必要的类或者标识选择符,如果应用到像这样的HTML中:
ExampleSourceCode<dividdivid="top"> <h1>Chocolatecurry</h1> <p>Thisismyrecipeformakingcurrypurelywithchocolate</p> <p>Mmmmmmmmmm</p> </div>
这是因为,用英文半角空格间隔选择符,我们指明了在标识id内的h1有“#ff0”的颜色,而p则是红色red和粗体bold。这可能也会有些复杂(因为可能不止两级,比如在内在内在内在内等等)。有必要多加练习。