原生JS中的三大家族(offset/scroll/client)与jQuery中对应的方法

JS中的offset家族:

一、offsetEWidth与offsetHeight:

获取的是元素的实际宽高 = width + border + padding

注意点:
1.可以获取行内及内嵌的宽高
2.获取到的值是一个number类型,不带单位
3.获取的宽高包含border和padding
4.只能读取,不能设置

console.log ( box.offsetWidth );//width + border + padding
console.log ( box.offsetHeight );//height + border + padding

这里写图片描述

二:offsetLeft与offsetTop:

offsetLeft:获取自己左外边框与offsetParent的左内边框的距离

offsetTop:获取自己上外边框与offsetParent的上内边框的距离

这里写图片描述

三:offsetParent:获取最近的定位父元素 (自己定位参照的父元素)

注意点:
1.如果元素自身是固定定位(fixed),则定位父级是null
2.如果元素自身是非固定定位,并且所有的父元素都没有定位,那么他的定位父级是body
3.body的定位父级是null

jQuery中获取宽高的方法:
一、width()/height()方法:获取到的是不带边框以及内边距的宽高
注意点:
1.获取到的就是内容的宽高,不带px的number类型的值.
2.获取不传参
3.传参代表的是设置内容的宽高

//模拟响应式布局.
      $(window).on('resize', function () {
        if($(this).width() > 1200){
          $('body').css('backgroundColor','red');
        }else if($(this).width() > 900){
          $('body').css('backgroundColor','yellow');
        }
        else if($(this).width() > 600){
          $('body').css('backgroundColor','pink');
        }else if($(this).width() > 400){
          $('body').css('backgroundColor','green');
        }else {
          $('body').css('backgroundColor','white');
        }
      });

二、innerWidth()/innerHeight()方法:获取到的是内容+padding的宽高.
注意点:
1.获取到的就是内容+padding的宽高,不带px的number类型的值.
2.获取不传参
3.传参代表的是设置内容的宽高,但是注意这里不会改变border的大小

三、outerWidth()/outerHeight()方法:获取到的是内容+padding+border+margin 的宽高.
注意点:
1.获取到的是内容+padding+border+margin 的宽高.
2.不传参代表的是获取获取到的是内容+padding+border 的宽高.
3.传的参数是true,获取到的是内容+padding+border+margin 的宽高.

四、获取页面可视区的宽高.
a: 宽度 (window).width()b. ( w i n d o w ) . w i d t h ( ) b . 高 度 (window).height()

五、offset()方法:获取到的是一个对象,里面有left值和top的值.
注意点:
1.offset()方法获取到的是一个对象,里面有left值和top的值.
2.offset方法获取元素距离document的位置.
3.不传参是获取,传参是设置

//设置,设置的时候给一个包含了left和top属性的对象.
        $('#son').offset({
          left:200,
          top:200
        });

JS中的scroll家族
一、scrollwidth与scrollHeight:

获取元素内容的真实宽高,这里是内容,不包括内边距以及border

1、scrollHeight表示元素的总高度,包括由于溢出而无法展示在网页的不可见部分

2、scrollWidth表示元素的总宽度,包括由于溢出而无法展示在网页的不可见部分

3、scrollTop:onscroll事件发生时,元素向上卷曲出去的距离

4、scrollLeft:onscroll事件发生时,元素向左卷曲出去的距离

这里写图片描述

jQuery中scrollTop()与scrollLeft()方法

jQuery中的scrollLeft与scrollTop的方法和原生的js的一样。

1、获取页面被卷曲的高度 $(window).scrollTop();

2、获取页面被卷曲的宽度 $(window).scrollLeft();

JS中的client家族

1、clientWidth/clientHeight:获取可视区域的宽高

2、clientTop/clientLeft:不常用,其实就是左边框border-left和上边框border-top

这里写图片描述

原生获取可视区域的clientHeight与clientWidth的方法:

//封装浏览器兼容函数获取界面可视区域
    getClientSize = function (  ) {
        return {
            clientWidth : window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0,
            clientHeight : window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0,
    }

jQuery中的position()方法

position方法:获取的是元素距离有定位的父元素(offsetParent)的位置

注意点:
1.获取到的也是一个对象,包含top和left值.
2.不能进行设置

$('#btn2').on('click', function () {
        //获取
        console.log($('#son').position());


        //不能设置
        // $('#son').position({
        //   left:200,
        //   top:200
        // });
      });

总结:
相同点:
a、js中的scrollLeft与scrollTop与jQuery中的一样
b、js中的offsetLeft及offsetTop和jQuery中position方法一样
c、 $(window).width()
$(window).height()和原生中的clientHeight与clientWidth获取可视区的宽高一致

最后一点,一定要理解清楚:

可视区域就是:你可以看到的区域。

浏览器窗口显示网页的部分(即不包括地址栏、工具栏)就是可视区。。

你可以用鼠标来推动浏览器窗口来改变大小,此时可视区的大小也是跟着变的。

  • 11
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScriptoffsetscrollclient都是针对元素位置和大小的属性。 1. offset offset指的是一个元素相对于其定位父元素的位置。offset包含了元素的位置(left和top)和大小(width和height),以像素为单位。offset属性是只读的。 例如,假设有一个元素div,它的位置是相对于其父元素的,那么可以通过以下方式获取它的offset属性: ``` var div = document.getElementById("myDiv"); var offsetLeft = div.offsetLeft; var offsetTop = div.offsetTop; var offsetWidth = div.offsetWidth; var offsetHeight = div.offsetHeight; ``` 2. scroll scroll指的是一个元素的滚动位置。scroll包含了元素在水平和垂直方向上的滚动位置(scrollLeft和scrollTop),以像素为单位。scroll属性是可读写的。 例如,假设有一个元素div,它有滚动条,那么可以通过以下方式获取它的scroll属性: ``` var div = document.getElementById("myDiv"); var scrollLeft = div.scrollLeft; var scrollTop = div.scrollTop; ``` 3. client client指的是一个元素的可见区域大小。client包含了元素在水平和垂直方向上的可见区域大小(clientWidth和clientHeight),以像素为单位。client属性是只读的。 例如,假设有一个元素div,它有一些内容,但是只有一部分是可见的,那么可以通过以下方式获取它的client属性: ``` var div = document.getElementById("myDiv"); var clientWidth = div.clientWidth; var clientHeight = div.clientHeight; ``` 区别: 1. offset包含了元素的位置和大小,而client只包含了元素的可见区域大小。 2. scrollclient都只包含了元素在水平和垂直方向上的属性,而offset包含了元素相对于其定位父元素的属性。 3. offsetclient是只读的,而scroll是可读写的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值