event change jquery css floating-point width

change - resize jquery



Obtención del ancho real de punto flotante de un elemento (2)

Prueba esto:

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

Fiddle actualizado: http://jsfiddle.net/johnkoer/Z2MBj/18/

Estoy usando jQuery (v1.7.1) y necesito obtener el ancho de punto flotante absoluto de un elemento, pero todos los métodos de ancho de jQuery parecen estar redondeando el valor del ancho.

Por ejemplo, si el ancho real de un elemento era 20.333333px , el método de ancho de jQuery devuelve 20 , es decir, ignorando el valor decimal.

Puedes ver lo que quiero decir en este jsFiddle

Entonces, mi pregunta es: ¿Cómo obtengo el valor de punto flotante del ancho de un elemento?


Si ya tiene una referencia al elemento DOM, element.getBoundingClientRect obtendrá los valores que desea.

El método ha existido desde Internet Explorer 4, por lo que es seguro utilizarlo en todas partes. Sin embargo, los atributos de width y height solo existen en IE9 +. Tienes que calcularlos si soportas IE8 y más abajo:

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 es 70% más rápido que window.getComputedStyle en Chrome 28, y las diferencias son mayores en Firefox: http://jsperf.com/getcomputedstyle-vs-getboundingclientrect