5

高さを次のように設定します。

$('element').height(1000);

そしてこのように:

$('element').css({'height': '1000px'});

これら2つの間にパフォーマンスの違いはありますか?

また、CSS3 トランジションのパフォーマンスにも関係がありますか?

4

1 に答える 1

3

ソースを読んで、ルーク。

jQuery.prototype.height:

//snipped to end:
return value === undefined ?
    // Get width or height on the element, requesting but not forcing parseFloat
    jQuery.css( elem, type, extra ) :

    // Set width or height on the element
    jQuery.style( elem, type, value, extra );

jQuery.prototype.css:

return value !== undefined ?
    jQuery.style( elem, name, value ) :
    jQuery.css( elem, name );

2 つの違いは、一致した要素を調べる前に行われることと、 にextra渡されるそのパラメーターです.height。何が合理的に大きな減速を引き起こす可能性がありますか? 私は本当の考えを持っていません。おそらく、jsエンジンが一方では実行できるが、他方では実行できない最適化に関係しているのでしょう。ほとんどの場合、パフォーマンス テストは良くありません (これらを正しくテストするのは非常に困難です)。

ただし、これらのメソッドのパフォーマンスは最優先事項ではありません。それが本当に問題である場合は、両方の方法を試して、どちらが大幅に改善されるかを確認することで、解決を試みることができます。ことわざにあるように、「時期尚早の最適化は諸悪の根源です」。

詳細に説明すると、プログラムで何かが遅いことに気づき、それを の呼び出しまで追跡すると、.heightに切り替えることでパフォーマンスの違いがあるかどうかを確認できます.css

于 2013-07-03T11:06:17.477 に答える