外部元素边距不等于内部元素边距

时间:2012-09-14 20:19:26

标签: javascript android html android-webview

我正在使用Android WebView显示我应用的HTML内容。我需要动态地找到元素的整个高度(通常是div),包括填充,边距和边框。我使用的是JavaScript,不能使用jQuery。

我一直在我的div上使用scrollHeight来获得高度。我使用var style = window.getComputedStyle(DIV, null);获得了div的计算样式,并通过调用style.marginTopstyle.marginBottom获得了上边距和下边距。他们都是0px。问题是scrollHeight仍然没有考虑属于div的边距的高度。

我得到了div的子元素(通常是P或H *标记)并以相同的方式获得相同的字段:scrollHeightmarginTopmarginBottomscrollHeight s完全相同(因为我通常每个div只有一个子节点),但子节点中通常有一个顶部或底部边距值未反映在父元素中。

我真的不明白为什么会这样。看起来通过孩子的边缘在父母之外呈现,但父母不知道它,并且不能直接访问它。

我正在寻找一种通过父元素访问孩子定义的边距的方法。这可能吗?

This Question非常有帮助,但我找不到为什么它以这种方式呈现的潜在原因而且线程似乎变冷了。

谢谢!

1 个答案:

答案 0 :(得分:1)

Sime Vidas向我指出了正确的方向,谢谢!

我发现自己试图找出div和他们孩子之间崩溃边缘的确切高度(但在我的问题中,措辞大不相同)。当通过DOM访问该信息时,它将告诉我父母和孩子的样式属性,但它不报告任何折叠边距的高度。

所以...我的问题的真正答案是否定的。我一直无法找到直接访问折叠边距属性的方法。

同样好的是获取我的div的offsetTop属性,并找到下一个Div的offsetTop属性之间的差异。这给出了总高度,包括最终的边距渲染。要仅查找边距,请减去scrollHeight

这可能不适用于所有情况,但对我的目的来说已经足够了。