外边距折叠
什么是外边距折叠?
简单来说,就是垂直方向上的两个外边距相遇时,会折叠成一个外边距。折叠后外边距的高度等于两者中较大的那一个高度。
可能出现外边距折叠的情况
- 当两个元素垂直堆叠时,上方元素的下外边距会与下方元素的上外边距相折叠。


折叠前、后
- 当一个元素嵌套着另一个元素的情况下,假设没有内边距或边框来分隔外边距,它们的上、下外边距也会折叠。


折叠前、后
- 甚至同一个元素的外边距都能折叠,假设有一个空元素,只有外边距而没有边框或内边距。此时,上外边距与下外边距接触,结果也会折叠。


折叠前、后
外边距折叠只发生在文档常规流中块级盒子的垂直方向上。行内盒子、浮动盒子或绝对定位盒子的外边距不会折叠。
如果我们不希望外边距折叠,该怎么做呢?
- 浮动元素不会与任何元素发生叠加,也包括它的子元素
- 创建了BFC的元素不会和它的子元素发生外边距叠加
- 绝对定位元素和其他任何元素之间不发生外边距叠加,也包括它的子元素
- inline-block元素和其他任何元素之间不发生外边距叠加,也包括它的子元素
- 普通流中的块级元素的margin-bottom永远和它相邻的下一个块级元素的margin-top叠加,除非相邻的兄弟元素clear