9

jQueryコードを調べていたところ、次の行が見つかりました。

elem.runtimeStyle.left = elem.currentStyle.left;

https://github.com/jquery/jquery/blob/449e099b97d823ed0252d8821880bc0e471701ea/src/css.js#L169

なぜこれが行われるのかわかりません。これ無駄じゃない?

runtimeStyle を currentStyle に設定しても、何もオーバーライドされません。次回読むときに runtimeStyle を読み取り可能にすることを除いて-これは今は必要ないようです。

ここでの全体的な概念と、そのコードブロックが存在する理由を理解しています(左を非ピクセル値に設定し、そのピクセル値を読み取ってから、左を元に戻すことにより、数値の非ピクセル値を適切なピクセル値に変換するため)価値)。

編集これが行われたと思う理由については、以下の回答を参照してください(jsFiddleの図を使用)。

4

2 に答える 2

1

これは実際には、上記の RHS によって計算された値が上記の LHS に供給される IE ハックです。つまり、計算された値を取得するために、新しい値を取得しています。詳細については、このブログをご覧くださいhttp://jsperf.com/testing-awesome-hack-for-ie

于 2012-07-06T19:05:29.677 に答える
1

私はこれについて考えてきました。これが私がそれが行われたと信じる理由です:

runtimeStyle を currentStyle に設定すると、これが要素に適用されるスタイルになります (インライン スタイルよりもランタイム スタイルが優先されます)。したがってelem.style.left、次の行で設定すると、UI に変更はありません。ただし、新しいピクセル値はelem.style.pixelLeft- を使用して計算できます。これは、CSS の非ピクセル値をピクセル値に変換するだけだからです。pixelLeftは実際の位置の測定値ではなく、ピクセル値への変換にすぎません。

これを参照してください:http://jsfiddle.net/RaSzc/

これは、UI を変更せずにピクセル値を計算するために行われます。

于 2012-07-16T18:03:40.387 に答える