Zepto学习笔记
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学习笔记的更多相关文章
- 【zepto学习笔记03】事件机制
前言 我们今天直接进入事件相关的学习,因为近期可能会改到里面的代码就zepto来说,我认为最重要的就是选择器与事件相关了,随着浏览器升级,选择器简单了,而事件相关仍然是核心,今天我们就来学习学习 ze ...
- 【zepto学习笔记02】零碎点
前言 上次我们看了zepto的选择器方面的东西,其实zepto简单很大程度是因为他用了最新的检索器querySelectorAll,今天我们来学习下zepto的一些零碎点的地方吧,主要根据zepto官 ...
- 【zepto学习笔记01】核心方法$()(补)
前言 昨天学习了核心$(),有几个遗留问题,我们今天来看看吧 $.each 遍历数组/对象,将每条数据作为callback的上下文,并传入数据以及数据的索引进行处理,如果其中一条数据的处理结果明确返回 ...
- 【zepto学习笔记01】核心方法$()
前言 我们移动端基本使用zepto了,而我也从一个小白变成稍微靠谱一点的前端了,最近居然经常要改到zepto源码但是,我对zepto不太熟悉,其实前端水准还是不够,所以便私下偷偷学习下吧,别被发现了 ...
- zepto源码--核心方法10(位置)--学习笔记
今天基本上就是zepto学习笔记的最后一篇了,介绍一下有关位置的函数,position, offset, scrollLeft, scrollTop scrollLeft 如果所选取的包装集不存在,则 ...
- CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案
一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...
- 微信小程序开发:学习笔记[5]——JavaScript脚本
微信小程序开发:学习笔记[5]——JavaScript脚本 快速开始 介绍 小程序的主要开发语言是 JavaScript ,开发者使用 JavaScript 来开发业务逻辑以及调用小程序的 API 来 ...
- amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules
amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...
- amazeui学习笔记二(进阶开发4)--JavaScript规范Rules
amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...
随机推荐
- TCP系列46—拥塞控制—9、SACK下的快速恢复与Limited transmit
一.概述 1.SACK下的特殊处理过程 SACK下的拥塞控制处理是linux中拥塞控制的实现依据,再次强调一遍RFC6675的重要性,linux中拥塞控制主体框架的实现是与RFC6675一致的,所以如 ...
- UVA12545_Bits Equalizer
题目意思很简单,给你两个串,第一个串为0,1或者?,第二个串为0,1, 每次你可以对第一个串进行三种操作,1.0变为1:2.?变为0或者1:3.交换任意两个数的位置. 现在问你能否把第一个串变为第一个 ...
- Codeforces 618D Hamiltonian Spanning Tree(树的最小路径覆盖)
题意:给出一张完全图,所有的边的边权都是 y,现在给出图的一个生成树,将生成树上的边的边权改为 x,求一条距离最短的哈密顿路径. 先考虑x>=y的情况,那么应该尽量不走生成树上的边,如果生成树上 ...
- bzoj1318[spoj 744] Longest Permutation
题意 给出一个长度为n的,所有元素大小在[1,n]的整数数列,要求选出一个尽量长的区间使得区间内所有元素组成一个1到区间长度k的排列,输出k的最大值 n<=1e5 分析 不会做,好菜啊.jpg ...
- 【Linux】无法将 Ethernet0 连接到虚拟网络“VMnet8”
Linux安装centos之后,可能会出现ipconfig命令之后没有看到eth0信息,只有lo.log日志包的错为:无法将 Ethernet0 连接到虚拟网络“VMnet8” 解决办法有: 1.在虚 ...
- 详解SQL Server数据修复命令DBCC的使用
严重级别为 21 表示可能存在数据损坏. 可能的原因包括损坏的页链.损坏的 IAM 或该对象的 sys.objects目录视图中存在无效条目. 这些错误通常由硬件或磁盘设备驱动程序故障而引起. MS ...
- QoS专题-第5期-QoS实现之队列调度与报文丢弃
QoS实现之队列调度与报文丢弃 前面的专题里面介绍了通过优先级映射或者MQC对报文进行分类和标记,那么分类之后要做什么呢?那就是根据分类结果对报文进行流量控制处理.拥塞管理和拥塞避免就是两种流量控制手 ...
- [AT2363] [agc012_c] Tautonym Puzzle
题目链接 AtCoder:https://agc012.contest.atcoder.jp/tasks/agc012_c 洛谷:https://www.luogu.org/problemnew/sh ...
- Android ActionBar 使用详解
ActionBar取代了以前的TitleBar,是一种更加灵活的人机交互方式:ActionBar并不是完全自立门户的一个新兴的东西,而是和3.0以下版本的menu进行了合并整合:so,添加action ...
- SCWS中文分词,向xdb词库添加新词
SCWS是个不错的中文分词解决方案,词库也是hightman个人制作,总不免有些不尽如人意的地方.有些词语可能不会及时被收入词库中. 幸好SCWS提供了词库XDB导出导入词库的工具(phptool_f ...