• element对象


    一、offset、client、scroll

    clientWidth,clientHeight,clientLeft,clientTop;
    offsetWidth,offsetHeight,offsetLeft,offsetTop,offsetParent;
    scrollWidth,scrollHeight,scrollLeft,scrollTop。

    二、clientWidth、offsetWidth、scrollWidth的区别

    // 网页总高度
    document.documentElement.offsetHeight
    document.documentElement.scrollHeight
    document.body.offsetHeight
    document.body.scrollHeight
    // 视口高度
    window.innerHeight // 包括滚动条
    document.documentElement.clientHeight // 不包括滚动条

    1、元素内容的可视区的宽度,不包含滚动条边线和border,只包含width、padding,会随元素显示大小的变化而改变。

    clientWidth = padding + width; 

    2、元素整体的实际宽度,包含滚动条边线,border、width、padding,会随元素显示大小的变化而改变。

    offsetWidth = padding + width + border; 

    3、元素的实际内容的宽度,不包含滚动条边线,包含width、padding及溢出内容,会随元素中内容超过可视区后而变大。

    scrollWidth = padding + 包含内容的完全宽度; 

    4、元素内容不超过可视区时,无滚动条。

    clientWidth = scrollWidth

    5、元素内容超过可视区时,有滚动条。

    clientWidth < scrollWidth
    element.scrollHeight - element.scrollTop === element.clientHeight
    //滚动到内容底部时,上面等式为true;
    //没有滚动到内容底部时,上面等式为false;
    //判断用户是否滚动到了区块的底部。

    三、clientTop、offsetTop、scrollTop的区别

    元素的边框厚度,距离父元素的高度,滚动的高度。

    //整个网页滚动的垂直距离
    document.documentElement.scrollTop

    获取元素到顶部的距离用offsetTop,有时并不准确,可以用getBoundingClientRect(),用法如下:

    function getRect(oDiv){
      var rect = oDiv.getBoundingClientRect();
      var top = document.documentElement.clientTop;
      var left = document.documentElement.clientLeft;
      //兼容IE
      return{
        top: rect.top - top,
        bottom: rect.bottom - top,
        left: rect.left-left,
        right: rect.right - left
      }
    }
    var obj = GetRect(oDiv);
    console.log(obj.top); //元素上边到视图顶部的距离
    console.log(obj.left); //元素左边到视图左部的距离
    console.log(obj.bottom); //元素下边到视图顶部的距离
    console.log(obj.right); //元素右边到视图左部的距离

    四、elem.offsetTop和elem.style.top的区别
    elem.offsetTop和elem.style.top都可以获得HTML元素距离上方或外层元素的位置。
    1、返回值不同

    elem.offsetTop返回的是数字,而elem.style.top返回的是字符串,数字+px。

    2、读写可行性

    elem.offsetTop只读,而elem.style.top可读写。
  • 相关阅读:
    [BZOJ1934][Shoi2007]Vote 善意的投票[最小割]
    [BZOJ1066][SCOI2007]蜥蜴[最大流]
    [BZOJ2818][P2568]Gcd[欧拉函数]
    [BZOJ2208][P4306][JSOI2010]连通数[bitset优化floyd]
    [BZOJ1877][SDOI2009]晨跑[最大流+费用流]
    [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
    [BZOJ5347]冒泡排序[思维]
    [BZOJ2875][Noi2012]随机数生成器[等比数列求和+取模]
    [bzoj2809] 派遣
    [bzoj1965] 洗牌
  • 原文地址:https://www.cnblogs.com/camille666/p/js_element_obj.html
Copyright © 2020-2023  润新知