美文网首页
js获取元素相对、绝对位置

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

作者: adtk | 来源:发表于2017-08-14 11:48 被阅读0次

http://www.ruanyifeng.com/blog/2009/09/find_element_s_position_using_javascript.html

clientHeight和clientWidth:

元素的content+padding视觉面积,不包括border和滚动条占用的空间。

scrollHeight和scrollWidth

滚动条滚过的所有长度和宽度,有兼容性

scrollTop和scrollLeft

滚动条垂直距离,是document对象的scrollTop属性。
滚动条水平距离,是document对象的scrollLeft属性。
scrollTop和scrollLeft属性可以赋值,并立即自动滚动网页到相应位置

offsetTop和offsetLeft

该元素的左/上角与父容器(offsetParent对象)左/上角的距离

获取网页的大小

  function getViewport(){
    if (document.compatMode == "BackCompat"){
      return {
        width: document.body.clientWidth,//IE6
        height: document.body.clientHeight
      }
    } else {
      return {
        width: document.documentElement.clientWidth,
        height: document.documentElement.clientHeight
      }
    }
  }

---------------------------------------------------------------------
//取scrollHeight和clientHeight的最大值
  function getPagearea(){
    if (document.compatMode == "BackCompat"){
      return {
        width: Math.max(document.body.scrollWidth,
                document.body.clientWidth),
        height: Math.max(document.body.scrollHeight,
                document.body.clientHeight)
      }
    } else {
      return {
        width: Math.max(document.documentElement.scrollWidth,
                document.documentElement.clientWidth),
        height: Math.max(document.documentElement.scrollHeight,
                document.documentElement.clientHeight)
      }
    }
  }

获取网页元素的绝对位置

该元素的左上角相对于整张网页左上角的坐标

由于在表格和iframe中,offsetParent对象未必等于父容器,以下的函数对于表格和iframe中的元素不适用,所以表格被淘汰了。。。

function getElementLeft(element){
    var actualLeft = element.offsetLeft;
    var current = element.offsetParent;
    while (current !==null){
        actualLeft += (current.offsetLeft+current.clientLeft);
        current = current.offsetParent;
    }
    return actualLeft;
}

  function getElementTop(element){
    var actualTop = element.offsetTop;
    var current = element.offsetParent;
    while (current !== null){
      actualTop += (current.offsetTop+current.clientTop);
      current = current.offsetParent;
    }
    return actualTop;
  }

获取网页元素的相对位置

该元素左上角相对于浏览器窗口左上角的坐标;
有了绝对位置以后,将绝对坐标减去页面的滚动条滚动的距离就可以了。
滚动条垂直距离,是document对象的scrollTop属性。
滚动条水平距离,是document对象的scrollLeft属性。

//该元素left
  function getElementViewLeft(element){
    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; 
    }
    return actualLeft-elementScrollLeft;
  }
//该元素top
  function getElementViewTop(element){
    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; 
    }
    return actualTop-elementScrollTop;
  }

相关文章

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

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

  • 2019-06-17

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

  • 尺寸相关、滚动事件

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

  • jquery尺寸相关,滚动事件

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

  • 10-jQuery02

    尺寸相关、滚动事件 1、获取和设置元素的尺寸 加入购物车demo 2、获取元素相对页面的绝对位置 3、获取浏览器可...

  • js实现lazyload

    JS & jQuery 获取元素位置尺寸

  • JS & jQuery 获取元素位置尺寸

    jQuery 位置 offset: 获取匹配元素在当前视口的相对偏移 position: 获取匹配元素相对父元素的...

  • 获取元素位置

    getBoundingClientRect() 这个获取元素相对浏览器的位置获取浏览器相对屏幕的位置window...

  • 元素绝对位置、置顶菜单

    元素绝对位置 1、获取和设置元素的尺寸 width() 、height() 获取元素 width和height i...

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

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

网友评论

      本文标题:js获取元素相对、绝对位置

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