主線程卡住都照樣能滾 ,太厲害了吧

Chrome有沒有類似的實驗性功能?


Firefox不知道,既然有人邀請我就說說Chrome的。

1. 滾動是否平滑跟是否會被主線程block住不一定有關係。滾動平滑感更多是來自於補幀。然而平滑這本來就是很主觀的東西,具體我在這個回答裡面有說 巢鵬:Windows目前(2018)到底有多少種窗口滾動的API?有沒有實現平滑滾動的可能?

2. chrome有compositor thread scrolling了解下,一樣不會被主線程block,不過不是所有滾動都可以。devtools有個工具可以看網頁有什麼東西阻止compositor thread scrolling。

compositor thread scrolling原理是什麼呢?可以看Steve Kobe叔叔的Life of a Pixel。感謝 @麥克絲.韋 韋二聲小姐姐的翻譯。具體原理是這裡

https://docs.google.com/presentation/d/1boPxbgNrTU0ddsc144rcXayGA_WF53k96imRH8Mp34Y/edit#slide=id.g26fc6bb339_0_304

Chrome在Compositor Thread保存了rastered tile(你可以想像成一張圖片),這樣滾動就可以變成一個圖片的移動而不需要出現draw,raster。當然不是所有的情況都滿足可以使用當前的rastered tile。


竟然有人說Firefox滾動流暢,作為Firefox/Edge/Chrome三修用戶我可以告訴你,在平滑滾動上,Edge面前,其他瀏覽器就是弟弟。尤其是Firefox,高分屏上卡得我直接關了。


推薦閱讀:
相关文章