美文网首页
JS - 获取元素的绝对位置坐标、相对位置坐标(相对于整个页面、

JS - 获取元素的绝对位置坐标、相对位置坐标(相对于整个页面、

作者: 落雪无尘V | 来源:发表于2023-02-09 15:42 被阅读0次

1,绝对位置与相对位置

(1)网页元素的绝对位置,指该元素的左上角相对于整张网页左上角的坐标。无论网页滚动条如何滚动,它都是不会变化的。使用下面方法可以获取元素的绝对位置坐标:

// 获取元素的绝对位置坐标(像对于页面左上角)
function getElementPagePosition(element){
  //计算x坐标
  var actualLeft = element.offsetLeft;
  var current = element.offsetParent;
  while (current !== null){
    actualLeft += current.offsetLeft;
    current = current.offsetParent;
  }
  //计算y坐标
  var actualTop = element.offsetTop;
  var current = element.offsetParent;
  while (current !== null){
    actualTop += (current.offsetTop+current.clientTop);
    current = current.offsetParent;
  }
  //返回结果
  return {x: actualLeft, y: actualTop}
}

(2)网页元素的相对位置,是指元素左上角相对于浏览器窗口可视区域(视区:viewport)左上角的坐标。它会随着滚动条滚动而变化。使用下面方法可以获取元素的相对位置坐标(原理就是先获取绝对位置,然后再减去滚动距离):

// 获取元素的绝对位置坐标(像对于浏览器视区左上角)
function getElementViewPosition(element){
  //计算x坐标
  var actualLeft = element.offsetLeft;
  var current = element.offsetParent;
  while (current !== null){
    actualLeft +=  (current.offsetLeft+current.clientLeft);
    current = current.offsetParent;
  }
  if (document.compatMode == "BackCompat"){
    var elementScrollLeft=document.body.scrollLeft;
  } else {
    var elementScrollLeft=document.documentElement.scrollLeft;
  }
  var left = actualLeft - elementScrollLeft;
  //计算y坐标
  var actualTop = element.offsetTop;
  var current = element.offsetParent;
  while (current !== null){
    actualTop += (current.offsetTop+current.clientTop);
    current = current.offsetParent;
  }
  if (document.compatMode == "BackCompat"){
    var elementScrollTop=document.body.scrollTop;
  } else {
    var elementScrollTop=document.documentElement.scrollTop;
  }
  var right = actualTop-elementScrollTop;
  //返回结果
  return {x: left, y: right}
}

原文出自:www.hangge.com 转载请保留原文链接:https://www.hangge.com/blog/cache/detail_2260.html

相关文章

  • 2019-11-20

    相对于定位父级的坐标位置 offsetLeft offsetTop 该元素实体 所占的 offsetHeight ...

  • 2019-06-17

    元素绝对位置 $(function(){ var$pos=$('.pos'); //offset()是获取相对于页...

  • offsetX各种值总结

    pageX: 页面X坐标位置pageY: 页面Y坐标位置 screenX: 屏幕X坐标位置screenY: 屏幕Y...

  • 尺寸相关、滚动事件

    1、获取和设置元素的尺寸 2、获取元素相对页面的绝对位置 .offset()3、获取可视区高度 4、获取页面高度 ...

  • 位置与事件的浏览器兼容

    坐标:获取鼠标的坐标: 获取元素的位置: 滚动轴的高度: 获取元素的css计算后的样式: 在注册事件中:

  • float与overflow以及clear之间的关系

    定位 定位是定义元素框相对于其正常位置应该出现的位置。 普通流定位、浮动定位、相对定位、绝对定位 普通流定位 页面...

  • js获取元素相对、绝对位置

    http://www.ruanyifeng.com/blog/2009/09/find_element_s_pos...

  • jquery尺寸相关,滚动事件

    获取和设置元素的尺寸 获取元素相对页面的绝对位置 获取浏览器可视区宽度高度 获取页面文档的宽度高度 获取页面滚动距...

  • 第三课 坐标[计算机科学入门(Minecraft)]

    本课将介绍如何在Minecraft世界中相对于由(X Y Z)坐标表示的三坐标网格以及相对位置和世界位置之间的差异...

  • HTML与CSS之相对定位、绝对定位

    相对定位 指元素在其正常的位置偏移某些像素即相对于元素本身的原有位置 显示效果: 绝对定位 指相对于父元素的top...

网友评论

      本文标题:JS - 获取元素的绝对位置坐标、相对位置坐标(相对于整个页面、

      本文链接:https://www.haomeiwen.com/subject/bxchkdtx.html