美文网首页
关于js dom中宽高问题的记录

关于js dom中宽高问题的记录

作者: 爱忽悠的唐唐在晃悠 | 来源:发表于2017-07-20 11:12 被阅读38次

一、clientHeight与offsetHeight的区别:

  • element.clientHeight : 在页面上返回内容的可视高度(不包括边框,边距或滚动条)
  • element.offsetHeight:返回,任何一个元素的高度包括边框和填充及滚动条
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <style type="text/css">
        #div1{
            padding:10px;
            height:100px;
            border:2px solid black;
            background-color: red;
            box-sizing: border-box;
            /*box-sizing:content-box*/
        }
    </style>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<body>
     <div id="div1">
        
        
     </div>
     <script type="text/javascript">
     var dom=document.getElementById("div1");
     console.log("clientHeight",dom.clientHeight);
     console.log("offsetHeight",dom.offsetHeight);

     </script>
</body>
</html>

上面例子的输出结果为: clientHeight 96 , offsetHeight 100 。

我们在css上做一些小修改,将box-sizing改为content-box。此时结果会发生变化,变化的根本原因在于css盒子模型。当box-sizing为content-box时,即w3c标准,元素的内容区域不包含padding值。所以 此时css中定义的height+padding值会等于 clientHeight(120),height+padding+border等于offsetHeight(124) 。

二、clientHeight和scrollHeight的区别

值得注意的是scrollHeight 没有包含滚动工具条的高度,但scrollHeight是计算整个div中内容的高度(即滚动条拖动后显示的内容),而clientHeight只是记录可视高度。

下面是demo,可copy运行

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <style type="text/css">
        #div1{
            padding:10px;
            height:100px;
            border:2px solid black;
            background-color: red;
            /*  box-sizing:content-box;*/
            box-sizing: border-box;
            overflow: scroll;
        }
    </style>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<body>
     <div id="div1">
        <p>1111</p>
     </div>
     <script type="text/javascript">
     var dom=document.getElementById("div1");
     console.log("clientHeight",dom.clientHeight);
     console.log("offsetHeight",dom.offsetHeight);
     console.log("offsetLeft",dom.offsetLeft);
     console.log("offsetParent",dom.offsetParent);
      console.log("offsetTop",dom.offsetTop);
      console.log("scrollHeight",dom.scrollHeight);
      console.log("scrollLeft",dom.scrollLeft);
      console.log("scrollTop",dom.scrollTop);
      console.log("scrollWidth",dom.scrollWidth);
    
     </script>
</body>
</html>

相关文章

  • 关于js dom中宽高问题的记录

    一、clientHeight与offsetHeight的区别: element.clientHeight : 在页...

  • JS中的各种宽高

    Dom对象的宽高 dom对象会涉及到宽高,和定位的问题,对于可以滚动的dom对象,还会涉及到隐藏的部分。 clie...

  • jquery与js加载顺序区别

    1.通过原生的JS入口函数可以拿到DOM元素,也可以拿到DOM元素的宽高。通过JQuery入口函数可以拿到DOM元...

  • jS中关于各种宽高

    offsetWidth;//元素的宽度(包括元素宽度、内边距和边框,不包括外边距)clientWidth;//元素...

  • JS获取宽高

    JS获取宽高通过JS获取盒模型对应的宽和高,有以下几种方法: 为了方便书写,以下用dom来表示获取的HTML的节点...

  • jQuery中宽、高、位置和滚动条总结

    js中各种宽高令人头疼,相反,jQuery中则精简了不少。 宽、高 jQuery中获取宽高,最经典的就是width...

  • js中的宽高

    元素的宽度/高度元素.offsetWidth/offsetHeight 包含边框和滚动条(不算超出的部分)元...

  • 2018-07-24

    刚接触到js的知识海洋中, 简单的学会了定时器,窗口的宽度、高度和元素的宽、高, 以及DOM的知识, 用面向过程,...

  • uniapp renderjs

    1. uniapp 获取dom元素的宽高 在uniapp 中由于他禁止操作dom,所以不能直接获取dom元素,框架...

  • js中的各种宽高以及位置总结

    前言 被原生js的各种宽高、位置搞到爆炸,所以做一个小小的总结!!! dom对象 只读属性 clientWidth...

网友评论

      本文标题:关于js dom中宽高问题的记录

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