Zepto和jQuery的很多API都很一致,思路也很相似,我不会全都整理出来,只是把一些平时用到了的或者不同的地方需要注意一下的地方总结出来。另外,Zepto现在还不是很成熟,无论是对大小写的敏感还是选择器Sizzle的支持广度等等等等都不如jQuery,但是即便如此依然有很多个人和公司在使用它,很多大牛也很推荐Zepto,无论如何,先学习起来,市场总是需要新技术的更替,对Zepto,我们还是拭目以待吧!

=========2016年1月25日========

tap()方法

不要用click事件,用tap代替,因为click事件有200~300 ms的延迟,为了更快的响应,最好用Zepto提供的tap事件

var t1,t2;
$('#id').tap(function () {
t1 = Date.now();
});
$('#id').click(function () {
t2 = Date.now();
alert(t2 - t1);
});

Sizzle

:text :checkbox :first 等等在jQuery里面很常用的选择器,Zepto是不支持的。

jQuery 通过自己编写的 sizzle 引擎来支持 CSS 选择器,而 Zepto 是直接通过浏览器提供的 document.querySelectorAll 接口,而这个接口只支持标准的 CSS 选择器。

但是Zepto的模块selector扩展了Sizzle,使得Zepto也能支持部分jQuery选择器:

:visible
:hidden :selected
:checked :parent
:first
:last
:eq :contains
:has

尺寸

1.Zepto没有innerWidth(), innerHeight(),outerWidth(),outerHeight()这些方法

2.它的.height()/.width()方法也不完善

3.对于display:none 的元素,计算出的高宽都是0

而这在 jQuery 里面是没有问题的,因为 jQuery 针对这种元素,会先设置其CSS样式设置为position: "absolute", visibility: "hidden", display: "block" ,计算完高宽后再恢复。

Zepto是由盒模型(box-sizing)决定的,而jQuery忽略盒模型,始终返回内容区域的宽/高(不包含padding/border)

解决方式就是使用 .css('width') 而不是 .width()

prop()方法

这么写是不work的

$('#text').prop('readonly', true);

这么写才是work的

$('#text').prop('readOnly', true);

区别在于大小写

而jQuery的源码里是这么处理的

jQuery.each([
"tabIndex",
"readOnly",
"maxLength",
"cellSpacing",
"cellPadding",
"rowSpan",
"colSpan",
"useMap",
"frameBorder",
"contentEditable"
], function() {
jQuery.propFix[ this.toLowerCase() ] = this;
});

看到toLowerCase()的时候恍然大悟

fx_methods与show()方法

fx_methods是一些和show() hide() toggle()有关的模块,但是这个模块现在也不成熟,比如说show(),

<div style="background:black;opacity:0.7;display:none">
test
</div>

如果我们把这个div用show()显示出来

$('div').show('fast');

得到的结果会是一个opacity为1.0的div

因为zepto的show()很简单,没有宽高的变化,只是单纯地把opacity从0渐变为1。

解决的方法是,使用fadeIn(),或者自己写一个。

===========我是touch事件的分割线============

先看一下我之前总结的jQuery Mobile的事件总结,请狠狠地摸我

据说,jQuery Mobile不是很好用,我在做一个银行的ipad项目的时候也发现了这个问题,响应速度好慢啊!(当然,速度慢也有一些是json数据传输量太大的缘故。)

反正,无论如何,总之,业内都说Zepto在移动端的事件响应比jQuery Mobile要好,那就学习一下好了。

重要属性

我们可以从event.touches[0]里获取属性,它长这样:

clientX,clientY:触摸点相对于浏览器窗口viewport的位置;

pageX,pageY: 触摸点相对于页面的位置;

screenX,screenY:触摸点相对于屏幕的位置;

identifier:touch对象的unique ID 。

事件类型

touchstart:手指触摸屏幕上的时候触发

$('#touchs').bind("touchstart",function(event){
var touchpros =event.touches[0];
console.log(touchpros);
});

touchmove:手指在屏幕上移动的时候触发

$('#touchs').bind("touchmove",function(){
//touchmove
});

touchend:手指从屏幕上拿起的时候触发

$('#touchs').bind("touchend",function(){
//touchend
});

touchcancel:系统取消touch事件的时候触发

$('#touchs').bind("touchcancel",function(){
//touchcancel
});

当你触摸屏幕并抬起手指,只触发touchstart和touched。

可以根据基本的touch事件来封装成你想要实现复杂的效果,比如向左或向右滑动,向上或向下滑动,并在滑动时封装你想实现的效果。

Zepto学习笔记的更多相关文章

  1. 【zepto学习笔记03】事件机制

    前言 我们今天直接进入事件相关的学习,因为近期可能会改到里面的代码就zepto来说,我认为最重要的就是选择器与事件相关了,随着浏览器升级,选择器简单了,而事件相关仍然是核心,今天我们就来学习学习 ze ...

  2. 【zepto学习笔记02】零碎点

    前言 上次我们看了zepto的选择器方面的东西,其实zepto简单很大程度是因为他用了最新的检索器querySelectorAll,今天我们来学习下zepto的一些零碎点的地方吧,主要根据zepto官 ...

  3. 【zepto学习笔记01】核心方法$()(补)

    前言 昨天学习了核心$(),有几个遗留问题,我们今天来看看吧 $.each 遍历数组/对象,将每条数据作为callback的上下文,并传入数据以及数据的索引进行处理,如果其中一条数据的处理结果明确返回 ...

  4. 【zepto学习笔记01】核心方法$()

    前言 我们移动端基本使用zepto了,而我也从一个小白变成稍微靠谱一点的前端了,最近居然经常要改到zepto源码但是,我对zepto不太熟悉,其实前端水准还是不够,所以便私下偷偷学习下吧,别被发现了 ...

  5. zepto源码--核心方法10(位置)--学习笔记

    今天基本上就是zepto学习笔记的最后一篇了,介绍一下有关位置的函数,position, offset, scrollLeft, scrollTop scrollLeft 如果所选取的包装集不存在,则 ...

  6. CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  7. 微信小程序开发:学习笔记[5]——JavaScript脚本

    微信小程序开发:学习笔记[5]——JavaScript脚本 快速开始 介绍 小程序的主要开发语言是 JavaScript ,开发者使用 JavaScript 来开发业务逻辑以及调用小程序的 API 来 ...

  8. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

  9. amazeui学习笔记二(进阶开发4)--JavaScript规范Rules

    amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...

随机推荐

  1. Requests库常用方法及其详解

    request库七个方法详解 1. request方法 所有方法的的基础方法,三个参数:method,url,**kwargs. 1.1 method:请求方式 method参数共有七个可选的值,分别 ...

  2. 第二章:Internet地址结构

    引言 本章主要介绍了: 如何为Internet中的设备分配IP地址. 有助于理由可扩展性的地址结构分配方式. 特殊用途的地址. 表示IP地址 IPv4地址 长32位,采用点分四组或点分十进制来表示. ...

  3. 《IT小小鸟》读后感

    我是来自大一的小小鸟,想要飞却没有一对坚硬的臂膀! 看了<IT小小鸟>了解了学长和学姐们的大学经历后开始让我反思我的大学生活.学长和学姐们通过自身的经历来告诉我们,应该怎么样规划好大学生涯 ...

  4. myeclipse和ecplise中安装git插件的问题

    我的myeclipse10.7和ecplise helis一直安装不了git插件,myeclipse中details说我的myeclipse少了team_features等之类文件,helis的情况大 ...

  5. 搜索引擎Elasticsearch REST API学习

    Elasticsearch为开发者提供了一套基于Http协议的Restful接口,只需要构造rest请求并解析请求返回的json即可实现访问Elasticsearch服务器.Elasticsearch ...

  6. 3dContactPointAnnotationTool开发日志(二九)

      今天想着在Windows平台上跑通那个代码,不过它的官网上写的支持平台不包括windows,但我还是想试试,因为看他的依赖好像和平台的关系不是特别大.   看了下它的py代码,不知道是py2还是p ...

  7. python基础(一)简单入门

    一.第一个python程序 1.交互式编程 直接在命令行里面输入python即可进入python交互式命令行,linux下一样: 在 python 提示符中输入以下文本信息,然后按 Enter 键查看 ...

  8. web.py 中文模版报错

    1. 作为模板的html文件,必须是utf-8编码; 2. html文件内容中的charset必须为utf-8,也就是必须包含 <meta http-equiv="Content-Ty ...

  9. virtio 之后的数据直连

    在上一篇中说了virtio这种半虚拟化方案之后,还有一种全虚拟化的方案,这种全虚拟化的方案中,直接宿主机上的设备,直接被虚拟化成了n个设备,然后这些设备可以直接被加载进guest os中当做一个普通的 ...

  10. P4622 [COCI2012-2013#6] JEDAN

    题目背景 COCI 题目描述 有N个数排成一行(数值代表高度),最初所有的数都为零,你可以选择连续的一段等高的数,将它们都增加1(除了开头和结尾那个数)如下图表示了两次操作: 现在有一些数字看不清了, ...