这一直让我感到有些慌张,而且我无法找到其他人记录这种差异的地方。
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以不同方式返回计算值?
答案 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)
有两个polyfill修复了这个bug:
https://github.com/jonathantneal/Polyfills-for-IE8/blob/master/getComputedStyle.js
https://github.com/jonathantneal/polyfill/blob/master/polyfills/getComputedStyle/polyfill.js
看起来它解决了这个问题。
//SO says that I must add code here, but it's too long
//look at demo