分数ピクセル単位をサポートするブラウザは IE9 だけだという考えをどこから得たのかはわかりませんが、その仮定は完全に間違っています。
仕様のセクション 4.3から(強調を追加):
長さの値 (この仕様では <length> で示される) の形式は、<number> (小数点の有無にかかわらず) の直後に単位識別子 (たとえば、px、 em など) が続きます。
そして<number> を定義します:
一部の値型は、整数値 (<integer> で示される) または実数値 (<number> で示される) を持つ場合があります。実数および整数は、10 進数表記のみで指定します。<integer> は、「0」から「9」までの 1 つ以上の数字で構成されます。<number> は <integer> にするか、0 個以上の数字の後にドット (.) と 1 つ以上の数字を続けることができます。整数と実数の両方の前に「-」または「+」を付けて符号を示すことができます。-0 は 0 に相当し、負の数ではありません。
したがって、仕様ごとに、px
長さの単位は小数をサポートする必要があります。
これを証明するには、このフィドルをフルスクリーンで見て、ブラウザのズーム機能を使用してズームインしてください。

この Chrome のスクリーンショットでは、5.5 ピクセルの青いボックスが実際に 5 ピクセルの赤いボックスよりも高くなっていることに注意してください。
混乱は、非標準が計算された (丸められた) 整数element.clientHeight
値を返すという事実と、丸めがブラウザによって異なるという事実に起因する可能性があると思います。
私のフィドルでclientHeight
は、青の<div>
場合、100%ズームのIE9とFirefox 15は6
. Chrome 22 と Opera 12 は5
. すべてのブラウザーで、ユーザーがブラウザーのズーム レベルを変更すると、そのプロパティの値が変化します。
というか、頼りない。
要素の実際の分数単位で計算したい場合は、 を使用しますgetComputedStyle
。
var el = $('#b')[0]; // the actual DOM element
var height = parseFloat(getComputedStyle(el).height); // => 5.5