getComputedStyle报告Chrome / Safari / Firefox和IE11之间的不同高度
getComputedStyle reporting different heights between Chrome/Safari/Firefox and IE11
整天都有些沮丧,我无法找到其他人记录这种差异的地方。
window.getComputedStyle(el).height
有关演示,请参阅 http://jsfiddle.net/ZwF9H/6/。
我期望的是 window.getComputedStyle() 应该在所有浏览器之间返回相同的计算高度值。Internet Explorer 11正在做一些不同的事情。(实际上,IE 9 和 10 也是如此,但 IE 11 是我第一个可以使用开发工具
的。对于所有其他浏览器,计算的高度是在 css 中设置的高度,无论是在样式表中还是在 textarea 元素上内联。
IE11忽略了框大小:边框声明并减去填充和边距,我认为这是不正确的。
这是一个错误,我做错了什么,IE11 以不同的方式返回计算值是众所周知的事实吗?
我在IE11上遇到了同样的问题,它忽略了box-sizing: border-box;
,因此它从边框高度中减去填充,给我的height
值比Chrome报告的要小。
我发现getBoundingClientRect().height
确实在IE11和Chrome中报告了正确的高度(正确观察box-sizing: border-box;
)。 所以这为我解决了问题。
Element.height 指定内容区域内的高度,不包括填充或边框。这里有更多关于它的信息(https://developer.mozilla.org/en-US/docs/Web/CSS/height)。
我建议使用jQuery的$el.outerHeight(),如果你有这个选项的话。
使用填充代码
有两个填充物可以修复此错误:
- 乔纳桑特尼尔/Polyfills-for-IE8
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
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- java.net和javascript之间正则表达式的差异
- JavaScript中的函数和对象之间没有区别吗?
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Jquery在函数之间传递表行
- 根据某些条件在视图之间切换
- 在控制器和数据对象之间同步数据
- d3中堆栈函数和嵌套函数之间的差异
- JQuery:在页面之间滑动
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 操作放置在画布上的元素之间的连接
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- jquery在表单之间切换
- Nodejs API控制器,用于在API之间切换
- 如何在aspx页面之间传递参数
- 在索引.html和应用.js [node.js] 之间共享变量
- IE11中的jQuery-$(document).width()和$(“html&”).widh()之间的差异
- getComputedStyle报告Chrome / Safari / Firefox和IE11之间的不同高度
- jQuery .css() api在chrome和ie11之间的结果不同