zoukankan      html  css  js  c++  java
  • 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可读写。
  • 相关阅读:
    浅析 Java 中的 final 关键字
    谷歌Java编程风格指南
    分布式事务之两阶段提交协议(2PC)and 使用事件和消息队列实现分布式事务
    零和博弈与木桶定律
    Executors类创建四种常见线程池
    软件设计的原则&101个设计模式-2011年04月25日 陈皓
    编程中的命名设计那点事-陈皓
    从面向对象的设计模式看软件设计- 2013年02月01日 陈皓
    SQL语句
    分布式事务
  • 原文地址:https://www.cnblogs.com/camille666/p/js_element_obj.html
Copyright © 2011-2022 走看看