-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代码便可: