【发布时间】:2012-09-14 20:19:25
【问题描述】:
我正在使用 Android WebView 来显示我的应用的 HTML 内容。我需要动态找到一个元素(通常是一个 div)的完整高度,包括填充、边距和边框。我正在使用 JavaScript,无法使用 jQuery。
我一直在我的 div 上使用scrollHeight 来获取高度。我使用var style = window.getComputedStyle(DIV, null); 获得了div 的计算样式,并通过调用style.marginTop 和style.marginBottom 获得了顶部和底部边距。他们都是0px。问题是scrollHeight 仍然没有考虑属于 div 的边距的高度。
我得到了我的 div 的子元素(通常是 P 或 H* 标签)并以相同的方式获得了相同的字段:scrollHeight、marginTop 和 marginBottom。 scrollHeights 是完全相同的(因为我通常每个 div 只有一个子元素),但子元素中通常有一个顶部或底部边距值,它不会反映在父元素中。
我真的不明白为什么会这样。看起来好像通过 child 的 margin 渲染在 parent 之外,但是 parent 不知道它,并且不能直接访问它。
我正在寻找一种通过父元素访问子元素定义的边距的方法。这可能吗?
This Question 非常有帮助,但我没有找到为什么它以这种方式呈现的根本原因,并且线程似乎已经变冷了。
谢谢!
【问题讨论】:
-
它被称为“折叠边距”。 w3.org/TR/css3-box/#collapsing-margins 如果内部元素有垂直边距,而外部元素没有垂直填充/边框,则内部和外部元素的垂直边距合并为一个。可以这么说,内边距泄漏到外面。
-
那篇文章非常有用!谢谢!这是否意味着即使它们合二为一,我仍然必须分别计算它们的边距?
标签: javascript android html android-webview