视频:https://www.bilibili.com/video/BV1pE411q7FU?p=153
使用margin定义块元素的垂直外边距时,可能会出现外边距的合并。
对于两个嵌套关系(父子关系)的块元素,父元素有上边距同时子元素也有外边距,此时父元素会坍陷较大的外边距值。
这说的是啥???
下面看看例子吧。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.father {width: 500px;height: 300px;background-color: blue;margin-top: 200px;}.son {width: 100px;height: 100px;background-color: red;margin-top: 100px;}</style></head><body><div class="father"><div class="son"></div></div></body></html>
效果图
红的并没有距离蓝的上边并没有100px,只有0px。
为啥呢???
下面用浏览器调试看看。
父div
子div
所以,子div的margin-top:100px,坍陷到父div的margin-top:200px的区域内了,就不能实现子div距离父div的上边为100px。
解决方案
- 为父元素定义上边框(border-top)
- 可以为父元素定义上内边距(padding)
- 可以为父元素添加overflow: hidden
- 其他方法,比如浮动、固定、绝对定位的盒子不会有坍陷问题。
下面是实现后的效果
