JQuery(v1.7.1)を使用しており、要素の絶対的な浮動小数点幅を取得する必要がありますが、jQueryのすべての幅メソッドは幅の値を四捨五入しているようです。
たとえば、要素の実際の幅が20.333333px
、jQueryのwidthメソッドは20
、つまり、小数値を無視します。
これで私が意味することを見ることができます jsFiddle
だから、私の質問は次のとおりです。要素の幅の浮動小数点値を取得するにはどうすればよいですか?
すでにDOM要素への参照がある場合、 element.getBoundingClientRect
で必要な値が取得されます。
このメソッドはInternet Explorer 4から存在しているため、どこでも安全に使用できます。ただし、width
およびheight
属性は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/