是否有任何等效的跨浏览器 API 用于获取不包括边框大小、填充和边距的内容高度和宽度?我没有使用 jQuery 的选项。
编辑: 忘了说,我也必须支持 IE 8。
原文由 Md. Arafat Al Mahmud 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否有任何等效的跨浏览器 API 用于获取不包括边框大小、填充和边距的内容高度和宽度?我没有使用 jQuery 的选项。
编辑: 忘了说,我也必须支持 IE 8。
原文由 Md. Arafat Al Mahmud 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答13.1k 阅读
7 回答2.2k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.4k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.2k 阅读
好吧,我设法找到了解决方案。对于 IE 以外的浏览器,
Window.getComputedStyle()
可以解决问题。Window.getComputedStyle()
方法在应用活动样式表并解析这些值可能包含的任何基本计算后给出元素的所有 CSS 属性的值。 有关详细信息,请参阅 https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle 。问题出在 IE 8 及更早版本上。
getComputedStyle
是undefined
在其中。幸运的是,IE 具有专有的currentStyle
属性,我们可以从中检索内容width
和height
。可悲但真实的是,如果我们在样式表中的%
中声明width
,它也会在%
中返回。所以问题仍然是,我们需要一种方法将百分比值转换为像素值。 Dean Edwards 有一个 hack 可以解决这个问题。感谢他!
因此,最终使用 hack 查找内容宽度的跨浏览器解决方案(计算高度的逻辑相同,除了查询高度而不是宽度)如下:
假设我们有一个
div
id'container'
。它的宽度在样式表中设置为 50%。测试 JavaScript 代码: