获取元素的实际浮点宽度

我正在使用jQuery(v1.7.1),我需要获得元素的绝对宽度,但是所有jQuery的宽度方法似乎都是将宽度的值舍入。

例如,如果元素的实际宽度是20.333333px ,那么jQuery的宽度方法返回20 ,即忽略十进制值。

你可以看到我的意思是在这个jsFiddle

所以,我的问题是:我如何得到一个元素的宽度的浮点值?

如果你已经有了对DOM元素的引用, element.getBoundingClientRect将得到你想要的值。

该方法自Internet Explorer 4以来一直存在,所以无处不在。 但是, widthheight属性只存在于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

尝试这个:

 var element = document.getElementById("a"); alert(window.getComputedStyle(element).width); 

更新小提琴: http : //jsfiddle.net/johnkoer/Z2MBj/18/