overflow: scroll 时不能平滑滚动的问题及解决
以下代码可解决这种卡顿的问题:
-webkit-overflow-scrolling: touch;
是因为这行代码启用了硬件加速特性,所以滑动很流畅。
补充:
-webkit-overflow-scrolling: touch是 iOS Safari 的私有属性,开启"momentum-based scrolling"(惯性滚动),让长列表/长页面滑动更顺滑;现代 iOS Safari 已不再需要,未识别的值会被忽略。- 在 macOS Safari 上此属性仍可作为兼容回退使用;其它浏览器(Chrome、Firefox、Android)没有此问题,原生滚动本身已足够流畅。
- 真要彻底解决移动端滚动卡顿,推荐:
- 避免在滚动容器内使用复杂的
box-shadow、filter、background-attachment: fixed等耗性能属性;- 容器开启 GPU 合成(如
will-change: transform或transform: translateZ(0)),但要避免滥用;- 使用
overflow-anchor等新特性或第三方虚拟滚动库(虚拟列表)应对长列表。



