获取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
投稿

猜你喜欢

  • JS表格排序新法

    2010-07-09 06:40:13
  • MySQL最常见的操作语句小结

    2023-12-27 19:33:56
  • Mysql基础知识点汇总

    2024-01-23 08:15:40
  • 科讯CMS编辑器会自动更改代码

    2008-12-12 13:00:00
  • python中pd.Series()函数的使用

    2023-10-04 08:28:05
  • python爬取网易云音乐评论

    2021-02-23 11:23:02
  • mysql socket文件作用详解

    2024-01-24 02:18:53
  • MySQL MEM_ROOT详解及实例代码

    2024-01-15 13:42:54
  • 关闭窗口时保存数据的办法

    2009-02-19 13:39:00
  • Python去除字符串前后空格的几种方法

    2021-12-22 02:10:02
  • python实现批量获取指定文件夹下的所有文件的厂商信息

    2021-12-14 20:42:27
  • Golang 空map和未初始化map的注意事项说明

    2024-04-28 10:46:52
  • Python同时处理多个异常的方法

    2021-12-24 11:20:56
  • 十个简单好用的设计技巧[译]

    2009-04-08 12:56:00
  • SQL常用的四个排序函数梳理

    2024-01-13 04:41:49
  • Python np.where()的详解以及代码应用

    2023-02-15 18:33:01
  • 如何用Sleep函数编译一个定时组件?

    2010-06-13 14:35:00
  • Python实现五子棋人机对战 和人人对战

    2023-01-14 07:59:52
  • 再谈Python中的字符串与字符编码(推荐)

    2023-06-15 23:25:08
  • python利用socket实现udp文件传输功能

    2023-07-07 14:15:33
  • asp之家 网络编程 m.aspxhome.com