zoukankan      html  css  js  c++  java
  • JS-元素大小深入学习-offset、client、scroll等学习研究笔记

    一些属性和方法,在dom中没有规定如何确定页面中元素大小的情况下诞生。。。

    1.偏移量(offset dimension)

     测试代码:

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>offset偏移量学习</title>
     6         <meta name="author" content="郭菊锋/702004176@qq.com"/>
     7         <style type="text/css">
     8             #a{
     9                 height: 300px;width: 300px;
    10                 border: 1px solid red;
    11                 -webkit-box-sizing: border-box;
    12                 -moz-box-sizing: border-box;
    13                 box-sizing: border-box;
    14                 padding: 10px 0;
    15                 margin: 10px 0;
    16                 overflow: scroll;
    17             }
    18             #a p{height: 450px;}
    19         </style>
    20     </head>
    21     <body>
    22         <div id="a" style="">
    23             <p></p>
    24         </div>
    25     </body>
    26 </html>

    js代码:

    1 <script type="text/javascript">
    2             var a= document.getElementById('a');
    3               console.log(a.offsetHeight);
    4             console.log(a.clientHeight);
    5 </script>

    获取理论结果:

    //offsetWidth  包括padding和border,不包括滚动条,滚动条是默认在宽度中的。

    几种情况——
    //加了boxsizing的情况:  offsetWidth值  =  style的宽度值,
    //不加boxsizing的情况 :   offsetWidth值  =  style中的宽度  +  padding左右值  +  border左右值。


    //有无滚动条不受影响


    //height同理

    以上理论,经测在谷歌和火狐中都适用。

    offsetLeft 和 offsetTop

    offsetLeft/offsetHeight是元素的左边框/上边框到其最近的、具有大小的元素左边框/上边框的距离。

    具体值还是取决于他的offsetParent。

    心中有个概念,但是最终解释还是看不同情况下的结果:

     2.客户区大小(client dimension)

    指的是元素内容及其内边距所占据的空间大小,从字面上看,客户区大小就是元素内部的空间大小,因此滚动条占用的空间不计算在内【js高级程序设计文摘】

    测试offsetWidth顺便测试的clientWidth的

    clientWidth  永远会减去滚动条的尺寸和border的尺寸,只包括内容和padding的。!! 即使加了box-sizing=border-box也不包括border,

    几种情况——
    //加了box-sizing:   clientWidth值就是  =  style中的宽度 - border宽度,
    //不加box-sizing:   clientWidth值就是  =  style中的宽度 + padding左右值。

    //有滚动条情况:clientWidth值  =  (style中的宽度 + padding左右值)- 17px(滚动条的宽度值);
    //滚动条加box-sizing情况:  clientWidth值  =  style中的宽度 - 17px(滚动条的宽度值)- border的左右宽度值

    //height同理

    以上理论,经测在谷歌和火狐中都适用。

    3.scrollHeight(client dimension)

     scrollHeight返回元素的完整的高度,以像素为单位

  • 相关阅读:
    Java中的equals方法和==的区别
    C语言学习笔记--单向链表Markdown版本
    Tamias Blog's
    nginx图片服务器
    Nginx安装解决报错
    Detour框架注入样本无法正常启动(0x000007b)
    结构体指针中包含结构体指针
    Linux开发准备:Ubuntu14.04+Samba+MobaXterm+Source Insight 4.0
    在Visual Studio中将dll以资源的形式嵌入exe中
    MACD的价值不在于“金叉死叉”而在于背离
  • 原文地址:https://www.cnblogs.com/padding1015/p/6737363.html
Copyright © 2011-2022 走看看