我使用jQuery(v1.7.1),我需要获得一个元素的绝对浮点宽度,但所有的jQuery的宽度方法似乎是四舍五入的宽度的值。
例如,如果一个元素的实际宽度是20.333333px,jQuery的width方法返回20,即忽略十进制值。
你可以看到我的意思在这个jsFiddle
所以,我的问题是:如何获得元素的宽度的浮点值?
解决方法
如果你已经有一个对DOM元素的引用,
element.getBoundingClientRect
将得到你想要的值。
该方法自Internet Explorer 4以来已存在,因此它可以安全地使用无处不在。但是,宽度和高度属性仅存在于IE9中。如果您支持IE8及以下版本,您必须计算它们:
var rect = $("#a")[0].getBoundingClientRect(); var width; if (rect.width) { // `width` is available for IE9+ width = rect.width; } else { // Calculate width for IE8 and below width = rect.right - rect.left; }
getBoundingClientRect比Chrome 28中的window.getComputedStyle快70%,Firefox中的区别更大:http://jsperf.com/getcomputedstyle-vs-getboundingclientrect