移动端 touch 事件延迟怎么解决?

UP主~艳敏 阅读 4

我在做移动端页面时,发现点击按钮有明显延迟,大概300ms左右,用户体验很差。查了下说是浏览器默认的双击缩放导致的。

试过加 user-scalable=no 到 viewport,但 Safari 好像不认这个了。也试过用 touchstart 代替 click,但这样又没法处理长按和滑动冲突的问题。

有没有靠谱的方案既能消除延迟,又不影响其他手势操作?比如像 FastClick 那种,但现在是不是有更好的原生方法?

我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
司徒付楠
移动端这个300ms延迟确实是老问题了,性能上确实恶心。现在的确有好几种解决方案:

1. 原生方案是用标签禁用双击缩放:


但你说得对,Safari现在会忽略user-scalable=no,所以不全靠谱。

2. 更好的原生方法是CSS touch-action属性,这货是专为解决这个问题设计的:
.btn {
touch-action: manipulation;
}

这个告诉浏览器这个元素只需要轻触操作,不用等双击判断,兼容性还不错。

3. 如果非要更老的浏览器支持,可以用FastClick的polyfill方案,但现代浏览器没必要了,性能上反而增加开销。

个人建议直接用CSS方案,简单高效。如果遇到特别老的安卓机再考虑polyfill。别用touchstart代替click,会引发一堆手势冲突的坑,我当年就被这坑惨了。
点赞
2026-03-06 15:00