前言
这篇文章主要想说一下Zepto中与”偏移”相关的一些事,很久很久以前,我们经常会使用
offset
、position
、scrollTop
、scrollLeft
等方式去改变元素的位置,他们之间有什么区别,是怎么实现的呢?接下来我们一点点去扒开他们的面纱。
因上努力 果上随缘
这篇文章主要想说一下Zepto中与”偏移”相关的一些事,很久很久以前,我们经常会使用
offset
、position
、scrollTop
、scrollLeft
等方式去改变元素的位置,他们之间有什么区别,是怎么实现的呢?接下来我们一点点去扒开他们的面纱。
使用Zepto的时候,我们经常会要去操作一些DOM的属性,或元素本身的固有属性或自定义属性等。比如常见的有
attr()
,removeAttr()
,prop()
,removeProp()
,data()
等。接下来我们挨个整明白他们是如何实现的…点击zepto模块源码注释查看这篇文章对应的解析。
以前我们使用Zepto进行开发的时候,会把一些自定义的数据存到dom节点上,好处是非常直观和便捷,但是也带来了例如直接将数据暴露出来会出现安全问题,数据以html自定义属性标签存在,对于浏览器本身来说是没有多大意义的,最后要获取数据的时候还得操作dom。Zepto有一个
data
模块,专门用来做数据缓存,允许我们存放任何与dom相关的数据。
dom也就是文档对象模型,是针对HTML和XML的一个api,描绘了一个层次化的节点树。虽然浏览器原生给我们提供了许多操作dom的方法,使我们可以对dom进行查找,复制,替换和删除等操作。但是zepto在其基础上再次封装,给以我们更加便捷的操作方式。先看下图,我们以
删除元素
,插入元素
,复制元素
,包裹元素
和替换元素
几个模块分别探究zepto如何一一将其实现。