我有一个div元素(父元素),它包含另一个div元素(子元素)。
子元素通过CSS设置了margin-top : 30px
。当我计算父对象的offsetTop
时,即使父对象没有设置任何边距,它也会报告30px
!
更奇怪的是,只要我在父对象上设置border,那么offsetTop
就可以按需要工作。请看这个jsFiddle。
为什么在父对象上放置边框会改变其offsetTop
值?
最佳答案
那是因为margin collapsing
来自Mozilla开发者网络:
父级和第一/最后一个子级
如果没有边框、填充、内联内容或
将块的边距顶部与其第一个块的边距顶部分开
子块,或无边框、填充、内联内容、高度,
分隔块边距底部的最小高度或最大高度
当边距位于最后一个子项的底部时,这些边距将崩溃。
折叠的边距最终位于父级之外。
使用outline
属性查看幕后真正发生的事情。。。
Demo
关于javascript - parent 为什么要显示 child 的offsetTop值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22244504/