移动端300ms点击延迟和点击穿透问题

1 问题

移动端浏览器点击事件通常有300ms的延时,随着用户体验要求增高,300ms的点击延时越来越难以忍受。

2 原因

因为手机屏幕小,所有做了双击缩放,手机浏览器为了判断用户是单击还是双击就添加了300ms的延时处理。

3 解决办法(建议用)

3.1 禁用缩放

HTML文档头部包含如下meta标签

<meta name="viewport" content="user-scalable=no">
<meta name="viewport" content="initial-scale=1,maximum-scale=1">

3.2 更改默认的视口宽度

移动端浏览器默认的视口宽度并不等于设备浏览器视窗宽度,而是要比设备浏览器视窗宽度大,通常是980px。我们可以通过以下标签来设置视口宽度为设备宽度。

<meta name="viewport" content="width=device-width">

3.3 CSS touch-action

touch-action: none

3.4 引入fastclick方法 https://github.com/ftlabs/fastclick

3.4.1 原理

该方法在检测到touchend事件后,会触发自己模拟的click事件

3.4.2 引用和调用

<script src='fastclick.js'></script>
<script>
  if('addEventListener' in document){
    document.addEventListener('DOMContentLoaded', function(){
      FastClick.attach(document.body);
    }, false)
  }
</script>

4 补充

现在浏览器厂商已经做了处理,300ms已缩减至88ms,后续还会更少

posted @ 2021-07-10 10:58  不叫一日闲过  阅读(167)  评论(0编辑  收藏  举报