知识大全 js获取元素到文档区域document的坐标方法

Posted 元素

篇首语:自己选择的路,跪着也要走完。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 js获取元素到文档区域document的坐标方法相关的知识,希望对你有一定的参考价值。

  获取页面中元素到文档区域document的横向 纵向坐标的两种方法及其比较

  在js控制元素运动的过程中 对于页面元素坐标位置的获取是经常用到的 这里主要总结下两种方法

  一 通过叠加元素对象和它的offsetParent(如果存在)的offsetLeft/offsetTop属性来实现

  在阅读javascript高级程序设计第三版DOM部分时 了解到要获取某个元素在页面上的偏移量 需要将这个元素的offsetLeft和offsetTop与其offsetParent的相同属性相加 一直循环直至根元素 所以 要得到元素到文档区域的坐标位置 只需通过while循环不断获取offsetParent的offsetLeft/offsetTop直到offsetParent = null为止

  js代码

  代码如下:

  // 获取元素到文档区域的坐标

  function getPosition(element)

  var actualLeft = element offsetLeft

  actualTop = element offsetTop

  current = element offsetParent; // 取得元素的offsetParent

  // 一直循环直到根元素

  while (current !== null)

  actualLeft += current offsetLeft;

  actualTop += current offsetTop;

  current = current offsetParent;

  

  // 返回包含left top坐标的对象

  return

  left: actualLeft

  top: actualTop

  ;

  

  例子截图

>

  firebug下测试结果截图 (注 其他浏览器已通过测试!)

>

  二 通过 getBoundingClientRect() 方法实现

  getBoundingClientRect方法用于获得页面中某个元素的左 上 右和下分别相对浏览器视窗window的位置 返回的是一个对象 该对象有四个属性 top left right bottom;该方法原本是IE Only的 但是FF +和Opera +已经支持了该方法 可以说在获得页面元素位置上效率有很大的提高 另外 该方法避免使用while循环 而是直接获取数值来实现 比第一种方法性能要好 特别是在复杂的页面上更为明显

  js代码

  代码如下:

  // 获取元素到文档区域的坐标

  function getPosition(element)

  var dc = document

  rec = element getBoundingClientRect()

  _x = rec left // 获取元素相对浏览器视窗window的左 上坐标

  _y = rec top;

  // 与或body元素的滚动距离相加就是元素相对于文档区域document的坐标位置

  _x += dc documentElement scrollLeft || dc body scrollLeft;

  _y += dc documentElement scrollTop || dc body scrollTop;

  return

  left: _x

  top: _y

  ;

  

  经测试 该方法与第一种方法获取元素相对于document的坐标大小相同 对于IE低版本浏览器 存在一些差异

  注意 记得要累加上(IE除外)或body(针对IE)元素的水平或垂直滚动距离!

cha138/Article/program/Java/JSP/201311/20207

相关参考

知识大全 Js中获取frames中的元素示例代码

Js中获取frames中的元素示例代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本文为大家介绍

知识大全 浅析document.createDocumentFragment()与js效率

浅析document.createDocumentFragment()与js效率  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容

知识大全 解析php中获取系统信息的方法

  $root=getenv(DOCUMENT_ROOT);////服务器文档根目录$port=getenv(SERVER_PORT);////服务器端口$file=getenv(SCRIPT_NAM

知识大全 js获取dom的方法

  接口nodeType常量nodeType值备注ElementNodeELEMENT_NODE元素节点TextNodeTEXT_NODE文本节点DocumentNodeDOCUMENT_NODEdo

知识大全 jquery (document).ready中使用document.write导致页面空白解决办

jquery(document)ready中使用documentwrite导致页面空白解决办法有需要的朋友可参考一下做项目时想使用load机制动态加载js由于文件的依赖性要求js必须逐个加载(即syn

知识大全 通过JS得到当前焦点(鼠标)的坐标

通过JS得到当前焦点(鼠标)的坐标  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixinz

知识大全 获取鼠标的坐标

  viewplainprint?  「在窗体上获取相对于屏幕的坐标」  方法publicclassWin[StructLayout(LayoutKindSequential)]publicstruc

知识大全 Java获取窗口鼠标坐标以及键盘按键

Java获取窗口鼠标坐标以及键盘按键  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java中的

知识大全 js获得指定控件输入光标的坐标兼容IE等多种主流浏览器

js获得指定控件输入光标的坐标兼容IE等多种主流浏览器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 js图片延迟加载的实现方法及思路

这里延迟加载的意思是拖动滚动条时在图片出现在浏览器显示区域后才加载显示   大概的实现方式是在页面的load没有触发之前把所有的指定id的元素内的img放入到imgs中将所有的图片的src值