asfman
android developer
posts - 90,  comments - 213,  trackbacks - 0
offsetLeft包括自己的margin和offsetParent的padding而left则不包括这两个
同时offsetLeft不包括offsetParent的border
所以通过:
function getPosition(o)
{
 var rObj={left:0,top:0};
 while(o!==document.body)
 {
  rObj.left+=o.offsetLeft;
  rObj.top+=o.offsetTop;
  o=o.offsetParent;
 }
 return rObj;
}
获取的属性相对于实际的位置,少了几个offsetParent的border
所以正确的为:
function getPosition(o)
{
 var iLeft=0,iTop=0,iBorder;
 while(o!=document.body)
 {
  iBorder = parseInt(o.offsetParent.currentStyle.borderWidth,10);//但是ff没有currentStyle属性
  iBorder = iBorder?iBorder:0;
  iLeft += o.offsetLeft+iBorder;
  iTop  += o.offsetTop+iBorder;
  o = o.offsetParent;
 }
 return {"left":iLeft,"top":iTop};
}
clientLeft似乎相当于border的大小,但不设置border的话body居然有默认的clientLeft为2,其他标签为0
posted on 2007-10-26 14:17 汪杰 阅读(538) 评论(1)  编辑 收藏 引用 所属分类: divandcss

FeedBack:
# re: offsetLeft
2007-10-26 16:49 | 汪杰
asfman.getPosition = function(o)
{
var rObj={left:0,top:0},iBorderLeft,iBorderTop;
while(o!==document.body)
{

iBorderLeft = parseInt(asfman.getCurrentStyle(o.offsetParent,"borderLeftWidth"),10);
iBorderTop = parseInt(asfman.getCurrentStyle(o.offsetParent,"borderTopWidth"),10);
iBorderLeft = iBorderLeft ? iBorderLeft : 0;
iBorderTop = iBorderTop ? iBorderTop :0;
rObj.left+=o.offsetLeft+iBorderLeft;
rObj.top+=o.offsetTop+iBorderTop;
o=o.offsetParent;
}
return rObj;
}
asfman.flyTo = function(ops,ope,obj,speed)
{
var sX = ops.left;
var sY = ops.top;
var eX = ope.left;
var eY = ope.top;
speed = speed ? speed :20;
var r = 1;
function fly()
{
var iTimer = setInterval(function(){
if(r>20)
{
clearInterval(iTimer);
return true;
}
obj.style.left = (eX - sX)*r/20 + sX + "px";
obj.style.top = (eY- sY)*r/20 + sY + "px";
r++;
},speed);
}
return fly();
}  回复  更多评论
  
只有注册用户登录后才能发表评论。

<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(15)

随笔分类(1)

随笔档案(90)

文章分类(727)

文章档案(712)

相册

收藏夹

http://blog.csdn.net/prodigynonsense

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 457930
  • 排名 - 6

最新随笔

最新评论

阅读排行榜

评论排行榜