Zepto常见问题

Zepto遇到的问题

延时

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

点透

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

计算宽高

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

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

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

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

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

 

$pop.css(cssShow);ide

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

$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;

 

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

相关文章
相关标签/搜索