• Zepto常见问题


    Zepto遇到的问题

    延时

    总所周知,默认click事件,会有300ms的延时问题,Zeptotap事件很好的解决了这个问题。但是也挖了一个大坑。

    点透

    Zepto的点透应该也是大家比较熟悉的了。当两个层叠加的时候,上层绑定的tap事件触发后会穿透到底层,恰好底层有个a标签,页面就跳转了。为了解决这个问题,我不得不把tap事件换成click事件,由于click事件有延时,还得引入了第三方的类库FastClick

    计算宽高

    一个很简单的Tip提示,例如操作成功登录失败等等简单的提示,Tipshow之前,我会计算让Tip居中显示:

    var left = ($(window).width() - $pop.width()) / 2 + $(window).scrollLeft();

    然而$pop.width()始终为0,对于不可见元素,获取的宽高度始终为0,但是jQuery就能正常获取到,我又不得不采取如下的处理方式:

    var cssShow = {visibility: 'hidden', display: 'block'};

    var cssHide = {visibility: 'visible', display: 'none'};

     

    $pop.css(cssShow);

    var left = ($(window).width() - $pop.width()) / 2 + $(window).scrollLeft();

    $pop.css(cssHide);

     

     $pop.css({

         left: left > 0 ? left : 0

     });

    小结

    Zepto相对于JQuery来说确实比较轻量,但是成熟度还差得远,当出现点透和计算宽高失效的时候,我对Zepto有点灰心,希望Zepto后续能够及时升级解决这些问题,不然就使用jQuery了,特别是jQuery升级到版本2,也是相当不错的选择。

    浏览器的坑

    禁用滚动

    当页面弹出一个选择框。滑动屏幕,背后的页面跟着滚动,特别是在safari下,那效果太恶心,所以我选择禁用body的滚动。最暴力的解决方式是:

    $(document).on('touchmove',function(e){

        e.preventDefault();

    });

    这样会同时禁用掉弹出层的滚动效果,明显不可取,所以我才用下面的方式:

    .alpha {

        height: 100%;

        overflow: hidden;

        position: relative;

    }

     

    .alpha body {

        height: 100%;

        overflow: hidden;

    }

     

    当遮盖弹出的时候或者隐藏的时候让html切换class alpha

    $('html').toggleClass('alpha');

    回到顶部

    对于PC端,直接这样写,就会有一个向上平滑滚动的效果,然而对于移动端来说,并没有什么卵用:

    $('body,html').animate({scrollTop: 0});

    还是使用了第三方的插件模式出这个效果的scrollToTop

    Css中的

    Width:100px;  white-space:nowrap;   overflow:hidden;   text-overflow:ellipsis;

    多行

    Display:-webkit-box;  -webkit-line-clamp:2;   -webkit-box-orient:vertical;  overflow:hidden;

     

    一个元素在另一个元素中水平垂直居中

     

  • 相关阅读:
    多线程之生产者和消费者模式
    python多线程之线程同步--锁
    python多线程之动态确定线程数
    python多线程之循环,调用函数等
    V8 引擎是如何工作的?
    AST抽象语法树——最基础的javascript重点知识,99%的人根本不了解
    字节码
    V8 引擎是如何工作的?
    JavaScript arguments对象
    V8 是怎么跑起来的 —— V8 中的对象表示
  • 原文地址:https://www.cnblogs.com/jj-z/p/8145159.html
Copyright © 2020-2023  润新知