美文网首页
JQuery中的width 和 JS中的clientWidth,

JQuery中的width 和 JS中的clientWidth,

作者: 老95 | 来源:发表于2017-08-10 10:02 被阅读0次

JQuery中:

width()方法用于获得元素宽度;

innerWidth()方法用于获得包括内边界(padding)的元素宽度;

outerWidth()方法用于获得包括内边界(padding)和边框(border)的元素宽度;

如果outerWidth()方法的参数为true则外边界(margin)也会被包括进来,即获得包括外边框(margin)、内边界(padding)和边框(border)的元素宽度。

同理,innerHeight方法与outerHeight方法也是用同样的方法计算相应的高度。
所以说:对于同一个元素应该是:width()<=innerWidth()<=outerWidth()<=outerWidth(true);

JS中:

网页可见区域宽: document.body.clientWidth;
网页可见区域高: document.body.clientHeight;
网页可见区域宽: document.body.offsetWidth (包括边线的宽);
网页可见区域高: document.body.offsetHeight (包括边线的宽);
网页正文全文宽: document.body.scrollWidth;
网页正文全文高: document.body.scrollHeight;
网页被卷去的高: document.body.scrollTop;
网页被卷去的左: document.body.scrollLeft;
网页正文部分上: window.screenTop;
网页正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的宽: window.screen.width;
屏幕可用工作区高度: window.screen.availHeight;
屏幕可用工作区宽度:window.screen.availWidth;

1、offsetWidth :(width+padding+border)

当前对象的 可视宽度 。

style.width也是当前对象的宽度(width+padding+border)。

区别:1)style.width返回值除了数字外还带有单位px;

       2)如对象的宽度设定值为百分比宽度,则无论页面变大还是变小,

          style.width都返回此百分比,而offsetWidth则返回在不同页面中对象的宽度值而不是百分比值;

       3)如果没有给 HTML 元素指定过 width样式,则 style.width 返回的是空字符串;

2、offsetHeight:(Height+padding+border)

当前对象的 可视高度。

style.height也是当前对象的高度(height+padding+border)。

区别:1)style.height返回值除了数字外还带有单位px;

       2)如对象的高度设定值为百分比高度,则无论页面变高还是变矮,

          style.height都返回此百分比,而offsetHeight则返回在不同页面中对象的高度值而不是百分比值;

       3)如果没有给 HTML 元素指定过 height样式,则 style.height返回的是空字符串;

3、offsetLeft :

当前对象到其上级层左边的距离。

不能对其进行赋值.设置对象到其上级层左边的距离请用style.left属性。

style.left当前对象到其上级层左边的距离。

区别:1)style.left返回值除了数字外还带有单位px;

       2)如对象到其上级层左边的距离设定值为百分比,

          style.left返回此百分比,而offsetLeft则返回到其上级层左边的距离的值;

       3)如果没有给 HTML 元素指定过 left样式,则 style.left返回的是空字符串;

4、offsetTop :

当前对象到其上级层顶部边的距离。

不能对其进行赋值.设置对象到上级层顶部边的距离请用style.top属性。

style.top当前对象到其上级层顶部边的距离。

区别:1)style.top返回值除了数字外还带有单位px;

       2)如对象到其上级层顶部边的距离设定值为百分比,

          style.top返回此百分比,而offsetTop则返回到其上级顶部边的距离的值;

       3)如果没有给 HTML 元素指定过 top样式,则 style.top返回的是空字符串;

注意:如果上级层为body,由于IE、FF对padding、margin的解释不一样所以要明确规定处理不是下列的区别就不成立了。

IE 1)如果Div的上级层是body,而div与body之间有个div,如body->div->divo;divo的offsetTop=div的padding+margin+boder;

   2)如果Div的上级层是body,如body>divo;divo的offsetTop=div的padding+margin+boder;

         这divo的offsetTop=divo的margin >body.padding则为divo的margin,否则为body.padding谁大是谁?

FF 上述两种情况:offsetTop=margin+padding ;

(IE与FF中的body默认padding为10)在IE6.0 FF3.6.13

5、scrollWidth:获取对象的滚动宽度 。

6、scrollHeight: 获取对象的滚动高度。

7、scrollLeft:设置或获取位于对象左边界和对象中目前可见内容的最左端之间的距离(width+padding为一体)

8、scrollTop:设置或获取位于对象最顶端和对象中可见内容的最顶端之间的距离;(height+padding为一体)

9、clientWidth: 获取对象可见内容的宽度,不包括滚动条,不包括边框;

10、clientHeight: 获取对象可见内容的高度,不包括滚动条,不包括边框;

11、clientLeft: 获取对象的border宽度

12、clientTop:获取对象的border高度

13、offsetParent :当前对象的上级层对象.

IE6.0、FF1.06+:
clientWidth = width + padding
clientHeight = height + padding
offsetWidth = width + padding + border
offsetHeight = height + padding + border

IE5.0/5.5:
clientWidth = width - border
clientHeight = height - border
offsetWidth = width
offsetHeight = height

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>测试</title>
    <style media="screen">
      /**{
        padding: 0;
        margin: 0;
      }*/
      .div1 {
        position: absolute;

        width: 100px;
        height: 100px;
        background-color: pink;
        border: 1px solid ;
        padding-left: 20px;
      }
      .div1 .small {
        width: 50px;
        height: 50px;
        padding: 10px;
        background-color: red;

        position: absolute;
      }
      .small .little {
        width: 30px;
        height: 30px;
        background-color: hotpink;
      }
    </style>
  </head>
  <body>
      <div class="div1">
          <div class="small">
               <div class="little">

               </div>
          </div>
      </div>
  </body>
  <script >

      var div1 = document.getElementsByClassName('div1')[0];
      var small = document.getElementsByClassName("small")[0];
      var little = document.getElementsByClassName("little")[0];
      console.log(div1);
      // 获取元素的可视宽度,包括border、padding、content的宽度
      // 获取元素的可视高度,同上
      console.log(div1.offsetWidth);
      console.log(div1.offsetHeight);

      console.log(div1.style.width = "200px");
      console.log(div1.style.width);  // 只能通过JS设置,然后才能获取。

      // offsetLeft/offsetTop均是相对于父级元素,即父级元素需要定位,若不定位的话,相对于上上级的元素,直到body
      console.log(div1.offsetLeft);
      console.log(small.offsetLeft);
      console.log(little.offsetLeft);
      console.log(little.offsetTop);

  </script>
</html>

相关文章

网友评论

      本文标题:JQuery中的width 和 JS中的clientWidth,

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