【JS实现JQuery方法】offset().left使用offsetLeft实现
直接上代码:
function offset(curEle) {
let par = curEle.offsetParent,
//获取当前元素的父参照物(不一定是父元素)
l = curEle.offsetLeft,
//获取当前元素相对父元素左偏离
t = curEle.offsetTop;
//获取当前元素相对父元素上偏移
while (par && par.tagName !== 'BODY') {
//判断是否已经到了最外一层 并且判断父参照物存不存在
if (!/MSIE 8\.0/.test(navigator.userAgent)){
//利用正则表达式判断
l += par.clientLeft;
t += par.clientTop;
}
l += par.offsetLeft;
//获得元素距离父元素左偏移多少
t += par.offsetTop;
//获得元素距离父元素上偏移多少
par = par.offsetParent;
}
return {
top: t,
left: l
}
}
需要传入一个DOM元素,比如:
offset( doccument.getElementById('demo') )