offsetLeft,offsetTop,offsetParent详解

1.offsetLeft/offsetTop

在页面任一元素的offsetLeft总是找到离其最近的已经定位的元素定位,如果没有,就根据根节点body定位,然后获取其left值

<div id=”div2″>
<div id=”div3″>
<div id=”div4″></div>
</div>
</div>

css:
#div2{width:400px;height:400px;background:#0f0;margin-left:10px}
#div3{width:300px;height:300px;background:#00f;margin-left:10px}
#div4{width:200px;height:200px;background:#000;margin-left:10px;}

div4的offsetLeft根据body定位:10+10+10=30

如果我们将css做如下改变

css:
#div2{width:400px;height:400px;background:#0f0;position:relative;margin-left:10px}
#div3{width:300px;height:300px;background:#00f;margin-left:10px}
#div4{width:200px;height:200px;background:#000;margin-left:10px;}

div4的offsetLeft根据div2定位:10+10=20

offsetTop同理

2.offsetParent

其实offsetParent,返回一个元素离其最近的已经定位的元素,如果没有就返回body,其概念和offsetLeft差不多

3.实例:封装一个函数获得任一元素在页面的位置

var GetPosition= function (obj)
{
var left = 0;
var top = 0;
while(obj.offsetParent)//如果obj的有最近的父级定位元素就继续
{
left += obj.offsetLeft;//累加
top += obj.offsetTop;
obj=obj.offsetParent;//更新obj,继续判断新的obj是否还有父级定位,然后继续累加
}
return {“left”:left,”top”:top}//返回json格式
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天崩地裂金刚不坏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值