我有一个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/

10-13 01:57