我想在做很多网页特效的时候,你都想要准确地得到某个element的body的相对位置。但奇葩的IE可不是这么想的,得到的offsetParent往往不是body,所以囧吧!!!

但是,在这个人才辈出的年代,总是有人会想出很nice的方法去解决这个问题。

IE对offsetTop和offsetLeft的理解方式让人费解,往往指相对于父亲container的x和y。所以,IE里面要得到准确的body X和Y,必须用累计的方式:

 

   
   
   
   
  1. function getAbsoluteOffsetTop(obj) { 
  2. var y = obj.offsetTop; 
  3. while (obj = obj.offsetParent) y += obj.offsetTop; 
  4. return y; 

 

   
   
   
   
  1. function getAbsoluteOffsetLeft(obj) { 
  2. var x = obj.offsetLeft; 
  3. while (obj = obj.offsetParent) x += obj.offsetLeft; 
  4. return x; 

 

   
   
   
   
  1. picLayer.style.top=parseInt(getAbsoluteOffsetTop(picA))+36+"px"
  2. picLayer.style.left=parseInt(getAbsoluteOffsetLeft(picA))-15+"px"