-webkit-overflow-scrolling
屬性控制元素在移動設備上是否使用滾動回彈效果.css
auto
web
touch
el.scrollTop = 500;瀏覽器
此時,我發如今IOS環境下,每次手動改變scrollTop後整個容器變成空白,但手指觸摸一下內容就出來了,scrollTop是成功改變了的,只是內容繪製出錯。(這裏我我的判斷是瀏覽器底層的問題,由於安卓不存在這問題)code
我經過用延遲加載,延遲設置滾動,或者是手動改變容器中的內容來強制重繪,惋惜都不起做用,最終找到問題出在-webkit-overflow-scrolling: touch,由於當我把值設置爲auto時BUG不存在。內存
思路出來了,在手動設置scrollTop前,先關閉慣性滾動,待設置完成後從新開啓便可。it
貼上解決代碼:效率
el.WebKitOverflowScrolling = 'auto';
el.scrollTop = 500;
el.WebKitOverflowScrolling = 'touch';容器
查了一下網上的資料,H5端代碼就再也不敷述了,看一下Native處理渲染
-webkit-overflow-scrolling: touch 的流程以下:硬件
實際上,Safari真的用了原生控件來實現,對於有-webkit-overflow-scrolling的網頁,會建立一個UIScrollView,提供子layer給渲染模塊使用
要實現這個效果很簡單,只須要加一行css代碼便可: