针对CSS外边距合并的问题,我针对网上一些解决措施,做了一些总结和验证,总结如下:(水平margin不会被合并,垂直margin会被合并)
1.设置了的overflow属性的盒模型,则其与子元素之间的垂直margin不会合并,但其与父元素之间、与相邻元素之间的margin会合并。(overflow取值为visible除外)
2.设置了float属性的盒模型,则其与相邻元素之间、其与父元素之间、其与子元素之间的垂直margin都不会被合并。
3.设置了绝对定位position:absolute的盒模型,则其与相邻元素之间、其与父元素之间、其与子元素之间的垂直margin都不会被合并。(但应注意position:absolute对其后元素的position的影响)
4、设置了display:inline-block的盒模型,则其与相邻元素之间、其与父元素之间、其与子元素之间的垂直margin都不会被合并。
相邻元素的margin是否被折叠会影响元素的位置
防止外边距合并解决方案:
1.防止元素与子元素margin重叠:
用内层元素的margin通过外层元素的padding代替;
内层元素透明边框 border:20px solid transparent/父元素background-color;
外层元素 overflow:hidden;/overflow:auto;
2.防止元素与子元素、与父元素。与相邻元素的重合:
设置元素绝对定位 postion:absolute;或float:left;或display:inline-block;