为什么父母显示孩子的offsetTop值?

时间:2014-03-07 07:53:57

标签: javascript html css

我有一个div元素(父元素),它包含另一个div元素(child)。

子元素通过CSS设置margin-top : 30px。当我计算父项的offsetTop时,即使父项没有设置任何保证金,它也会报告30px

更奇怪的是,只要我将边框放在父级上,offsetTop就会按照需要运行。请参阅此jsFiddle

为什么在父级上设置边框会改变其offsetTop值?

1 个答案:

答案 0 :(得分:3)

那是因为margin collapsing

来自Mozilla开发者网络:

  

父母和第一个/最后一个孩子

     

如果没有边框,填充,内联内容或间隙   将块的边缘顶部与其第一个边缘顶部分开   子块,或没有边框,填充,内联内容,高度,   min-height或max-height分隔块的边距底部   在最后一个孩子的边缘底部,那些边缘崩溃了。   折叠的保证金最终在父母之外。

使用outline属性查看幕后真实情况......

Demo