私は、$(window).scrollのjQueryスクロールバインドがかなりの量のページを遅らせる傾向があることに気付きました。私は次のスクリプト使用して、それらを過ぎてスクロールしたときに例えば、私は私のページの変更スタイルの要素を持っている:
$(window).scroll(function() {
var bottom_of_window = $(window).scrollTop() + $(window).height();
$('.ElementsToBeChanged').each(function() {
var bottom_of_object = $(this).offset().top + $(this).outerHeight();
if (bottom_of_window > bottom_of_object) {
//Add my styles
}
});
});
を、それは常にスクロール上で動作するので、それは当然のことながら、ウェブサイトはラグなりますが、私は遭遇していませんオブジェクトが過去にスクロールされたときのイベントをトリガする代替手段。スクロールでイベントを発生させるこの種のウェブサイトはかなり一般的です。この遅れを回避するために彼らは何を使用しますか?
共通として、プラグインを使用しますこれに対する解決策は、すべての 'scroll'イベントではなく、たった今あなたのコードを毎回実行することです。 –
完全な答えではありませんが、これをスピードアップするのに役立ついくつかのもの: 1.アンダースコアのデバウンスを使用してください。最後に起動してから一定の時間が経過した場合にのみ、イベントがトリガーされます。 2.オブジェクト参照を保持します。現在、スクロールしてウィンドウを2回クエリするたびに、クラス "ElementsToBeChanged"を持つすべての要素をクエリしています。その中で、 "ElementsToBeChanged"ごとに$(this)を2回クエリしています。スクロール機能の外で "ElementsToBeChanged"のクエリを少なくとも引き出すことでこれを改善することができます – jas7457
https://johnresig.com/blog/learning-from-twitter/ – Phix