getComputedStyle报告Chrome / Safari / Firefox和IE11之间的不同高度

时间:2013-10-31 22:47:24

标签: javascript internet-explorer getcomputedstyle

这一直让我感到有些慌张,而且我无法找到其他人记录这种差异的地方。

window.getComputedStyle(el).height

有关演示的信息,请参阅http://jsfiddle.net/ZwF9H/6/

我期待的是window.getComputedStyle()应该在所有浏览器之间返回相同的计算高度值。 Internet Explorer 11正在做一些不同的事情。 (实际上,IE 9和10也是如此,但IE 11是第一个我可以使用开发工具的工具。)

对于所有其他浏览器,计算出的高度是css中设置的高度,无论是在样式表中还是在textarea元素上内联。

IE11忽略了box-sizing:border-box声明并减去了padding和margin,我认为这是不正确的。

这是一个错误吗,我做错了什么,是否知道IE11以不同方式返回计算值?

3 个答案:

答案 0 :(得分:5)

我在IE11中遇到了同样的问题,它忽略了box-sizing: border-box;,因此它从边框高度减去填充,比Chrome报告的值height更小。

我发现getBoundingClientRect().height 在IE11和Chrome中报告了正确的高度(正确观察box-sizing: border-box;)。所以这解决了我的问题。

答案 1 :(得分:1)

Element.height指定内容区域内的高度,不包括填充或边框。这里有更多相关信息(https://developer.mozilla.org/en-US/docs/Web/CSS/height)。

如果您有这个选项,我建议使用jQuery的$ el.outerHeight()。

答案 2 :(得分:0)