获取Dom元素的X/Y坐标

作者:zhusun 来源:Koubei UED 时间:2009-10-10 12:49:00 

现在Web页面的交互方式越来越多样化,其中拖放页面元素也是一种很常见的操作。在这类操作当中有两个主要问题需要解决,一个是事件的注册方式,一般处理拖放元素的事件顺序是:捕获鼠标正键按下——注册鼠标移动事件——捕获鼠标正键抬起——注销鼠标移动事件;另一个问题就是拖放元素的位置,即X/Y坐标。这里我主要来讲述后面的问题:如何获取一个Dom元素的坐标。

当今已有很多的JS框架封装了获取Dom元素的坐标的方法,我们可以直接使用,而这里我更多的是希望透过这些方法,看到原始的获取坐标方式以及如何处理跨浏览器问题。

首先认识一下getBoundingClientRect方法,标准语法为:

oRect = object.getBoundingClientRect();

Dom节点调用该方法可返回一个ClientRect类型的对象,该对象有四个属性值:top、left、right、bottom,表示了该节点相对于可视浏览器可视区域的左上角位置的坐标,看图就能好理解

坐标说明图1

补充一下,如果当前的元素已经超出可视区域,依然按照可视区域的左上角位置的坐标来计算,如图2

坐标说明图2

这样就可以简单的获取Dom元素在可视区里的X/Y坐标(通过left和top属性)。最后在计算上页面滚动条的偏移量就可以计算出元素在整个页面中的X/Y坐标了。页面滚动偏移量的计算在不同浏览器下有所不同,不过我们可以借鉴YUI里面方法,设计一个通用的方式:

scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);

在W3C标准下document.body.scrollTop和document.body.scrollLeft都为0,所以采用了上面兼容的方式获取页面滚动条的偏移量。

标签:dom,坐标,框架,对象
0
投稿

猜你喜欢

  • asp读取xml实例代码

    2011-03-08 11:13:00
  • 也来谈谈”完美”跨域

    2008-12-19 12:34:00
  • 用FrongPage设计网页花样

    2008-09-17 10:47:00
  • 实现框架页面iframe的背景透明方法

    2008-06-18 12:21:00
  • css reset中的list-style:none

    2010-05-26 13:56:00
  • 数据库理论:学习基于SQL数据库的算法

    2009-01-13 13:38:00
  • SQL Server的怪辟:异常与孤立事务

    2009-09-24 14:11:00
  • 玩体验,先忘掉自己

    2010-01-30 13:36:00
  • SQL Server讲堂:备份和恢复措施

    2009-05-22 10:21:00
  • Oracle性能究极优化 上第1/2页

    2010-07-30 13:26:00
  • 解决杀毒软件误删asp文件的方法

    2008-10-21 21:23:00
  • SQL Server开发过程中的的常见问题总结

    2009-01-06 11:16:00
  • 破解空间实现域名绑定到子目录方法

    2010-03-14 11:29:00
  • 浅谈图表参数化设计

    2010-08-29 18:03:00
  • 用户体验 保守的使用下拉菜单

    2008-01-15 20:00:00
  • 何处安放的Loading

    2011-08-10 19:11:20
  • Mootools 1.2教程(5)——事件处理

    2008-11-19 16:33:00
  • 美化段落文本 1

    2008-05-15 12:24:00
  • 如何制作关联的下拉菜单?

    2010-06-29 21:19:00
  • 什么是Ajax及Ajax的优势

    2007-09-07 09:56:00
  • asp之家 网络编程 m.aspxhome.com