閱讀this article後,我感到非常興奮,關於更快的滾動效果。我去實現Warry的方法,看看我能發現任何性能上的差異 - 相比,使用滾動事件偵聽器:沒有onScroll的滾動速度更快?
從文章window.addEventListener('scroll', function() {
console.log('Scrolling: ' + window.pageYOffset);
});
代碼:
function loop() {
if (lastPosition == window.pageYOffset) {
requestAnimationFrame(loop);
return false;
} else lastPosition = window.pageYOffset;
console.log('Scrolling: ' + window.pageYOffset);
// make sticky calculations...
requestAnimationFrame(loop);
}
loop(); // start loop
代碼輸出相同的這兩件(Y)抵消並且似乎在性能方面是相當的。所以我的問題是:文章是否正確?
另外,如何適合這張圖片?我知道它告訴瀏覽器它希望執行重新繪製。或者......是固定位置的簡單方法嗎?我對這個主題感興趣,因爲我正在爲粘性元素的插件工作。
任何信息或建議表示讚賞!
「*似乎是等效的表現*」 - 你是如何測量的? – Bergi
這一點是關於更有效的*效果*。如果您只是登錄到控制檯,則不會感覺到差異(除了可能的不同號碼或日誌)。 – Bergi
每個勾號的輸出結果都是一樣的。我還在Chrome的DevTools上切換了所有渲染功能(Paint flashing,圖層邊框,FPS表和滾動性能問題),以查看粘性元素的執行情況。沒有任何明顯的差異。我沒有爲此寫測試;只是好奇別人能告訴我這個話題。 – JasonK