js实现jquery的offset()方法(获取当前元素相对于文档的偏移量 )

JavaScript024

js实现jquery的offset()方法(获取当前元素相对于文档的偏移量 ),第1张

最近做项目,由于zepto使用的功能较少,想将zepto的功能用较少原生实现,其中有个实现zepto的offset()方法取到各种值的难为了我,我百度了下,大体网上千篇一律的这样写到

我本着试试看的态度将这个方法炒了上去,打印出值结果与我需要的值相差甚远,为此我仔细翻了下源码,源码见下面链接

源码

找到如下方法getBoundingClientRect,翻了下caniuse发现兼容性还好(本人移动端),故可以写成以下方式

如果要考虑兼容性,请仔细看zepto源码

另外上述

改成

也可以实现

可以用Array中自带的方法:

arrayObj.shift( )

shift 方法可移除数组中的第一个元素并返回该元素。

例如:

var ary=[1,2,3,4]

var a=ary.shift()//a=1ary=[2,3,4]

arrayObj.slice(start, [end])

slice 方法返回一个 Array 对象,其中包含了 arrayObj 的指定部分。

参数:start,截取数组开始下标。end截止的下标,但不包括end元素

例如:

var ary=[1,2,3,4]

var newary=ary.slice(0, 2);//newary=[1,2],不包括下标2 所对应的元素3。