9

HTMLドキュメント内に絶対に配置された単純なdivタグがあります。Chromeで、「右」のCSSルールをピクセル単位の固定値に設定し、「左」のルールを「自動」に設定し、その後すぐにjqueryのposition()メソッドを使用して左の位置を決定すると、返される値は次のようになります。この種類:122.6363525390625。同じことがoffset()メソッドにも当てはまります。

一方、Firefoxにはこの問題はありません。

なぜこれが起こるのか、それを防ぐ方法があるのか​​教えていただけますか?前もって感謝します!

4

2 に答える 2

10

パーセンテージ幅を使用すると、それが計算でうまくいくからです。次のレイアウトがあると想像してください。

<div style="width: 111px">
    <div style="width: 50%"></div>
</div>

内側の要素の幅は、自然数ではなく55.5ピクセルと計算されます。正確なCSS属性によっては、小数点以下の桁数がかなり増える可能性があります。

Chromeはサブピクセルレンダリングを使用しているため、この動作が見られます。

最後に、なぜこれが問題を引き起こすのかはわかりませんが、もちろん、自然数に丸めたい場合は、を使用できますMath.round(x)

于 2012-06-23T11:58:37.283 に答える
-3

Chromeでは値が切り捨てられるため、120、120.5、120.6はすべて同じ幅を示します。したがって、10進値を使用して心配する必要はありません。.5ピクセルのようなものはありません。ピクセルは全体の単位です。関数が10進値を返すというこの問題がある場合は、parseIntを使用してみませんか?このことをブラウザに任せて処理しないでください。そうしないと、ページが破損する可能性があります。

于 2012-06-23T10:50:10.190 に答える