zoukankan      html  css  js  c++  java
  • 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模式加载等优点。

  • 相关阅读:
    基于Flask开发web微信
    爬取实例
    scrapy框架学习之路
    scripy
    wtforms
    由testcase数据之分析
    无用之flask学习
    无用之flask
    无用之学matplotlib,numpy,pandas
    jsp_1
  • 原文地址:https://www.cnblogs.com/kiscall/p/5019034.html
Copyright © 2011-2022 走看看