总所周知,默认click事件,会有300ms的延时问题,Zepto的tap事件很好的解决了这个问题。可是也挖了一个大坑。css
Zepto的点透应该也是你们比较熟悉的了。当两个层叠加的时候,上层绑定的tap事件触发后会穿透到底层,刚好底层有个a标签,页面就跳转了。为了解决这个问题,我不得不把tap事件换成click事件,因为click事件有延时,还得引入了第三方的类库FastClick。html
一个很简单的Tip提示,例如‘操做成功’、‘登陆失败’等等简单的提示,Tip在show以前,我会计算让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。
单
Width:100px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
多行
Display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
一个元素在另外一个元素中水平垂直居中