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. 团队项目选题报告(I know)

    一.团队成员及分工 团队名称:I know 团队成员: 陈家权:选题报告word撰写 赖晓连:ppt制作,原型设计 雷晶:ppt制作,原型设计 林巧娜:原型设计,博客随笔撰写 庄加鑫:选题报告word ...

  2. Web.config配置configSections学习

    文章:c# 配置文件之configSections配置 configSections节点需要位于configuration第一的位置,紧挨configuration. <configuratio ...

  3. Java clone() 浅拷贝 深拷贝

    假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short, ...

  4. scrum 项目准备2.0

    1.确定选题. 应用NABCD模型,分析你们初步选定的项目,充分说明你们选题的理由. 录制为演说视频,上传到视频网站,并把链接发到团队博客上. 截止日期:2016.5.6日晚10点 演说稿: 各位领导 ...

  5. beta-1 阶段各组员的贡献分分配

    小组名称:飞天小女警 项目名称:礼物挑选小工具 小组成员:沈柏杉(组长).程媛媛.杨钰宁.谭力铭 bera-1阶段各组员的贡献分分配如下: 姓名 团队贡献分 谭力铭 5.2 沈柏杉 5.1 程媛媛 4 ...

  6. 【操作系统、UNIX环境编程】进程间通信

    多个进程可以共享系统中的各种资源,但其中许多资源一次只能为一个进程使用,我们把一次仅允许一个进程使用的资源称为临界资源,许多物理设备都属于临界资源,如打印机等. Linux下进程间通信有如下几种方式: ...

  7. solr4.2增量索引之同步(修改,删除,新增)--转载

    原文地址:http://www.jiancool.com/article/12743229775/;jsessionid=14E9B3F1BB33399799884B5C8F15DDE1  solr增 ...

  8. 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra

    题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择 ...

  9. [一]SpringBoot 之 HelloWorld

    (1)新建一个Maven Java工程 (2)在pom.xml文件中添加Spring BootMaven依赖 2.1在pom.xml中引入spring-boot-start-parent spring ...

  10. Qt浅谈内存泄露(总结)

    Qt浅谈内存泄露(总结) 来源 http://blog.csdn.net/taiyang1987912/article/details/29271549 一.简介 Qt内存管理机制:Qt 在内部能够维 ...