【获取网页元素高宽及距离的三大系列】

offset系列

offset概述

offset翻译过来就是偏移量,我们使用offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等。

获得元素距离带有定位父元素的位置
获得元素自身的大小(宽度高度)
注意:返回的数值都不带单位
offset系列常用属性:
offset系列属性
作用
1 element.offsetParent
返回作为该元素带有定位的父级元素如果父级都没有定位则返回body
2 element.offsetTop
返回元素相对带有定位父元素上方的偏移
3 element.offsetLeft
返回元素相对带有定位父元素左边框的偏移
4 element.offsetWidth
返回自身包括padding、边框、内容区的宽度,返回数值不带单位
5 element.offsetHeight
返回自身包括padding、边框、内容区的高度,返回数值不带单位

代码

    // offset系列
// 1  可以得到元素的偏移  位置   返回的不带单位的数值
    console.log(dad.offsetTop);  //相对于页面左上角
    console.log(dad.offsetLeft);
    //1.1   它以带有定位的父亲为准 如果没有父亲或者父亲没有定位则以body为准
    console.log(son.offsetTop);
    console.log(son.offsetLeft);
    // 1.2若要得到它相对父级的偏移,就给父亲加上(position:relative)

//2         可以得到元素的大小宽度和高度是包含padding+border+width
    console.log(son.offsetWidth);
    console.log(son.offsetHeight);
//    3 返回带有定位的父亲 否则返回的就是body
    console.log(son.offsetParent);  //返回带有定位的父亲 否则返回的就是body
    console.log(son.parentNode); //返回父亲 是最近一级的父亲 亲爸爸 不管爸爸有没有定位
    console.log(son.parentElement);

client系列

/client翻译过来就是客户端,我们使用client系列的相关属性来获取元素可视区的相关信息。通过client系列
的相关属性可以动态的得到该元素的边框大小、元素大小等。
client系列属性
作用
element.clientTop
返回元素上边框的大小
element.clientLeft
返回元素左边框的大小
element.clientWidth
返回自身包括padding、内容区的宽度,不含边框,j
返回数值不带单位
element.clientHeight
返回自身包括padding、内容区的高度,不含边框,返回数值不带单位
/
let dad=document.querySelector(‘.dad’);
let son=document.querySelector(‘.son’);

console.log(son.clientLeft);  //返回元素左边框
console.log(son.clientTop);   //返回元素上边框
console.log(son.clientHeight);//返回自身包括padding、内容区的宽度,不含边框
console.log(son.clientWidth);

scroll系列

<!--scroll翻译过来就是滚动的,我们使用scro川系列的相关属性可以动态的得到该元素的大小、滚动距离等。
scroll系列属性
作用
element.scrollTop
返回被卷去的上侧距离,返回数值不带单位
element.scrollLeft
返回被卷去的左侧距离,返回数值不带单位
element.scrollWidth
返回自身实际的宽度,不含边框,返回数值不带单位
element.scrollHeight
返回自身实际的高度,不含边框,返回数值不带单位-->
<div style="width: 50px;height:100px;overflow: scroll" >
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
    我是内容
</div>
<script>
    var div=document.querySelector('div');
    console.log(div.scrollHeight);  //991
    console.log(div.scrollWidth)  //50
    div.addEventListener('scroll',()=>{
        console.log(div.scrollTop);   //元素竖直方向被卷去的高度
        console.log(div.scrollLeft);
    })
    document.addEventListener('scroll',()=>{
        console.log(window.pageXOffset)
        console.log(window.pageYOffset) //整个网页竖直方向被卷去的高度
    })

</script>

三大系列总结

1 三大系列大小对比

作用
element.offsetWidth
返回自身包括padding、边框、内容区的宽度,返回数值不带单位
element.clientWidth
返回自身包括padding、内容区的宽度,不含边框,返回数值不带单位
element.scrollWidth
返回自身实际的宽度,不含边框,返回数值不带单位

2 主要用法:

1.offset系列经常用于获得元素位置offsetLeft offsetTop
2.client:经常用于获取元素大小clientWidth clientHeight
3.scroll经常用于获取滚动距离scrollTop scrollLeft
4.注意页面滚动的距离通过window.pagexoffset 和window。pageyoffset获得
代码如下

 document.addEventListener('scroll',()=>{
        console.log(window.pageXOffset)
        console.log(window.pageYOffset) //整个网页竖直方向被卷去的高度
    })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值