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

2024-03-20

我正在使用 Android WebView 来显示我的应用程序的 HTML 内容。我需要动态查找元素(通常是 div)的完整高度,包括填充、边距和边框。我正在使用 JavaScript,无法使用 jQuery。

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

我获取了 div 的子元素(通常是 P 或 H* 标签),并以相同的方式获取了相同的字段:scrollHeight, marginTop, and marginBottom. The scrollHeights 完全相同(因为我通常每个 div 只有一个子元素),但子元素中通常有一个顶部或底部边距值,该值不会反映在父元素中。

我真的不明白为什么会这样。看起来好像通过子级的边距在父级之外呈现,但父级对此一无所知,并且无法直接访问它。

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

这个问题 https://stackoverflow.com/questions/2555002/how-to-get-the-height-of-a-div-considering-inner-elements-margins非常有帮助,但我没有找到以这种方式呈现的根本原因,并且线程似乎已经变冷了。

Thanks!


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

我发现自己试图找出 div 及其子级之间折叠边距的确切高度(但在我的问题中措辞有很大不同)。当通过 DOM 访问该信息时,它会告诉我父级和子级的样式属性,但它不会报告任何折叠边距的高度。

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

外部元素边距不等于内部元素边距 的相关文章