5

div内の画像をスクロールするにはjQuery .scrollTopを使用しています。 Firefoxではうまくいきます。スクロールは非常にスムーズかつ高速です。 IE8では、スクロールは非常に遅く、不安定です - イメージは約2秒後に1回スクロールします。画像サイズは、2000 * 2000〜4000 * 4000ピクセルの平均です。jquery scroll Internet Explorer 8のトップパフォーマンス

これを改善する方法はありますか?

IE 7でのパフォーマンスはやや優れていますが、まだ十分ではありません。

はありがとう

編集:は、私は問題は、私は両方のスクロールバー(オーバーフロー-xとオーバーフロー-y)を有効にしているスクロールがIE 7と8に実装される方法であると信じている、と私は持っていますこれらのスクロールバーを使用して画像をスクロールしようとしました。問題はまったく同じです。私はこれを2GBのRAMと2.8GHzのCPU 1600Mhz RAMを搭載したCore i7デスクトップを搭載した数少ないPC - ペンティアムデュアルコアで実行しようとしました。その結果はほぼ同じです。 FireFoxはより速くスクロールしますが、その平均CPU使用率はIEのCPU使用率よりも10%高いです。これは私に困惑を残す...確かにマイクロソフトでは、今までにこの問題に対処していただろうか?

もう少し奇妙なことに気づいたことは、Core 2 Duoのラップトップでスクロールが速く実行されたことです。私はこれがグラフィックスカードドライバと関係があるかどうか疑問に思っています... IE 7/8でもGPUを使用していますか?

は、このいずれかが愚かに聞こえるが、私はこの問題の解決に本当に興味があれば... IEが悪い..

+0

あなたの質問に対する即座の答えはわかりませんが、明らかにパフォーマンスはクライアントマシンの仕様に基づいています。この場合、メモリとページングがボトルネックになると思われます。それが画像のサイズに関連する問題であることを確認するには、狭くする(1-2px)が、大きな画像には同じ問題がありますか? – Basic

+0

こんにちは、これは2GBのRAMと内蔵グラフィックスカードを搭載した平均Core 2デュオで正常に動作します。私はマシンの性能が問題ではないと思っています。特に、FireFoxで少なくとも2倍の速さで動作するためです。 –

+0

編集をご覧ください –

答えて

6

jQueryの.scrollTop()は、悪名高い、すなわちが遅く、かつ場合であることをすることはできませんすみませんマークアップはわずかに複雑または大規模でも、パフォーマンスが上がることはありません。

解決策は、jQuery .scrollTop()関数を使用せず、ネイティブプロパティ.scrollHeight.scrollTopに基づいて自分自身を構築することです。

理由は、すなわち、jqueryの.scrollTop()遅さの基底であるオフセットを計算するためです。つまり、DOMツリーを歩いて、つまりすべての親に対してオフセットを計算する必要があります。

jQueryはこれが可能ですが、事前にマークアップを知っていて、これを最適化することができるため、いつでもより高速に実行できます。オフセット計算をほとんどの時間前に実行して修飾子としての定数

これは、jQueryの欠陥ではない可能性があります。つまり、マークアップとスタイルの作成方法によっては、スクロールが強制的にページを完全にレンダリング/再ペイントするスクロールするピクセルごとに、それがクロールまですべて遅くなります。

関連する問題