我有一个div元素(父元素),它包含另一个div元素(child)。
子元素通过CSS设置margin-top : 30px
。当我计算父项的offsetTop
时,即使父项没有设置任何保证金,它也会报告30px
!
更奇怪的是,只要我将边框放在父级上,offsetTop
就会按照需要运行。请参阅此jsFiddle。
为什么在父级上设置边框会改变其offsetTop
值?
答案 0 :(得分:3)
来自Mozilla开发者网络:
父母和第一个/最后一个孩子
如果没有边框,填充,内联内容或间隙 将块的边缘顶部与其第一个边缘顶部分开 子块,或没有边框,填充,内联内容,高度, min-height或max-height分隔块的边距底部 在最后一个孩子的边缘底部,那些边缘崩溃了。 折叠的保证金最终在父母之外。
使用outline
属性查看幕后真实情况......