WEB 移动端 300ms 延迟

移动端300毫秒延迟是怎么来的呢,又怎么解决呢?

完整版:http://www.linovo.me/front/webapp-300ms.html

简洁版:http://www.xiaomeiti.com/note/3585

一言以蔽之,就是本来只能手机提供了一个双击放大/再双击缩小的功能,然后怎么判断双击呢?那就是点了第一下,然后等300ms,在这300ms内如果又有点击,就是双击,否则该干嘛干嘛。但是这样引发的一个问题是如果一个链接,在用户点击了一次的情况下,要等300ms再跳转,用户就会觉得这页面很卡(实际上延迟100ms用户就能明显感受到。所以我们要解决这个问题。

一、禁止缩放

问题的来源就是页面缩放问题,所以解决方法里就有这个。禁用缩放

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"/>

一般进行移动开发的时候都会加上这种标签,直接就禁止掉了页面缩放,万事大吉!

二、设置 viewport 的 device-width (chrome 32+)

在 chrome 32+ 中,如果设置了 viewport 的宽度小于或等于物理设备的宽度,那么也会达到禁用缩放的效果。

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=3">

注意:跟上面不一样

三、利用指针事件(IE10+)

指针事件很多,解决这个问题用这个:

selector {
    -ms-touch-action: manipulation; /* IE10  */
    touch-action: manipulation;     /* IE11+ */
}

四、tappy.js

https://github.com/filamentgroup/tappy/

存在点透(上面元素的点击事件会被下面的元素接收到,也可以解决)等问题。

很小,只有1kb左右,需要jquery或者能提供类似借口的框架。

$( "a.my-link" ).bind( "tap", function( e ){
  alert( "tap!" );
}); 

五、fastclick.js

https://github.com/ftlabs/fastclick

很流行,很好用。

原声使用:

if (‘addEventListener‘ in document) {
    document.addEventListener(‘DOMContentLoaded‘, function() {
        FastClick.attach(document.body);
    }, false);
}

有jQuery库

$(function() {
    FastClick.attach(document.body);
});

有支持AMD模式加载等优点。

时间: 2024-11-06 18:19:22

WEB 移动端 300ms 延迟的相关文章

使用原生JS封装Tap事件,解决移动端300ms延迟

为了防止误操作,移动端iOS操作系统针对原生click事件做了300ms的延迟,这在一定程度上影响了我们的使用体验. GitHub项目地址:https://github.com/SimonZhangITer/MyTapEvent FastClick 现在有现成的插件fastclick可以解决这个问题,但是也有弊端: GitHub上最新版本的插件大小为25.4kb,轻量为趋势,能省则省. 它的核心思想是取消默认的click时间,判断当前dom节点的类型进行相应的操作,这个判断过程较为繁琐. MyT

移动端300ms兼容问题(移动端经典问题)

移动端300ms延迟原因 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题:当时的网站都是为大屏幕设备所设计的.于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题. 双击缩放(double tap to zoom),这也是会有上述 300 毫秒延迟的主要原因.双击缩放,即用手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会将网页缩放至原始比例. 假定这么一个场景.用户在 iOS Safari 里边点击了一个链接.由于用户可以进行双

移动端300ms的点击延迟以及解决方案

[今天做在移动端的一些效果时,我选择使用动画而不是用过渡,这个300ms的点击延迟是我为什么使用动画而不使用过渡最主要的一个原因] 动画和过渡 共同点:都是css控制DOM运动, 不同点: 1.过渡:只有两个关键帧,开始和结束: 2.动画可以设置多个关键帧 3.过渡必须通过事件去触发 4.动画不需要打开即可运动 [CSS执行速度更快,js事件触发执行,手机端点击类事件则会遇上300ms点击延迟,用户体验更差] 一.移动端300ms点击延迟 一般情况下,如果没有经过特殊处理,移动端浏览器在派发点击

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

一.移动端300ms点击延迟 一般情况下,如果没有经过特殊处理,移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟.也就是说,当我们点击页面的时候移动端浏览器并不是立即作出反应,而是会等上一小会儿才会出现点击的效果.在移动WEB兴起的初期,用户对300ms的延迟感觉不明显.但是,随着用户对交互体验的要求越来越高,现今,移动端300ms的点击延迟逐渐变得明显而无法忍受. 那么,移动端300ms的点击延迟是怎么来的呢? 问题由来 这要追溯至 2007 年初.苹果公司在发布首款 iPho

移动端点击300ms延迟

转载自:http://www.jianshu.com/p/6e2b68a93c88 一.移动端300ms点击延迟 一般情况下,如果没有经过特殊处理,移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟.也就是说,当我们点击页面的时候移动端浏览器并不是立即作出反应,而是会等上一小会儿才会出现点击的效果.在移动WEB兴起的初期,用户对300ms的延迟感觉不明显.但是,随着用户对交互体验的要求越来越高,现今,移动端300ms的点击延迟逐渐变得明显而无法忍受. 那么,移动端300ms的点击延

web移动端资源整(1)

meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> 忽略将页面中的数字识别为电话号码 <meta name="format-detection" content=&

web移动端常用知识点笔记

摘要:因为平时搞移动端的比例多一点,做个小小的总结.虽然网上很多这方面的总结,不过还是想自己也总结一下,适合自己的才是最好的.这样也方便以后自己的查阅 viewport模板——通用 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <!-- H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 --> <meta content="width=device-

SeaJS:一个适用于 Web 浏览器端的模块加载器

什么是SeaJS?SeaJS是一款适用于Web浏览器端的模块加载器,它同时又与Node兼容.在SeaJS的世界里,一个文件就是一个模块,所有模块都遵循CMD(Common Module Definition)规范.SeaJS本身遵循(Keep it Simple, Stupid)理念开发,API仅有几个. 为什么用SeaJS?假如我们要开发一个web应用App,在这个应用中需要使用jquery框架.App的首页index.html会用到module1.js,module1.js依赖module2

web移动端开发经验总结

整理web移动端开发经验,部分内容借鉴于网上的博文. 1.meta标签 <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0;" /> <!-- width可视宽度,initial-scale初始化缩放比例,maximum-scale允许用户缩放的最大比例,minimum-scale允许用户缩放的最小