JS 获取屏幕/浏览器/页面元素相对距离与宽高

系统屏幕信息

在这里插入图片描述

  • window.screen.height

这个是设备显示屏的高度,各个机型的显示屏高度都不一样,可以在系统设置中看

  • window.screen.availHeight

屏幕的可用高度,一般是显示屏高度减去显示屏任务栏的高度

screen.availHeight = screen.height - 任务栏高度

注; 更改显示器的缩放倍数,会影响到获取的值,比如屏幕放大125%,则原本1080高度的值,读取后为864。即1080 / 1.25 = 864

浏览器信息

在这里插入图片描述

  • window.outerHeight

    浏览器的高度,高度改变,会改变值的大小

  • window.innerHeight

    浏览器的可用高度 = 浏览器高度 - 顶部工具栏

    若有调试面板还会再减去调度面板的高度,最后得出的才是可用高度

页面信息

获取body的高(不含边框)

document.body.clientHeight :body的高度
clientHeight = padding + height

获取body的高(含边框)

document.body.offsetHeight :body的高度(包含border)
offsetHeight = padding + height + border

offsetHeightclientHeight 的高度区别就在于边框高度

获取整个网页的高

document.body.scrollHeight,为网页可见高度加上未显示的网页的高度(滚动条未显示部分)。

有些情况获取的是某个滚动元素总体高度,可以对明确的元素使用document.querySelector(domEle).scrollHeight

document.body.clientHeight结果基本一致

获取元素相对距离或位置

获取滚动条到top和left的距离

  • document.body.scrollTop || document.documentElement.scrollTop:获取滚动条到顶部的距离

  • document.body.scrollLeft || document.documentElement.scrollLeft: 获取滚动条到左边的距离

获取某个元素相对于视窗的位置

getBoundingClientRect用于获取某个元素相对于视窗的位置集合。集合中有top, right, bottom, left等属性。

1. 语法:这个方法没有参数。

  rectObject = document.querySelector(selectorDom).getBoundingClientRect();

2. 返回值类型:

  • rectObject.top:元素上边到视窗上边的距离;
  • rectObject.right:元素右边到视窗左边的距离;
  • rectObject.bottom:元素下边到视窗上边的距离;
  • rectObject.left:元素左边到视窗左边的距离;
    在这里插入图片描述

获取元素到顶部或左部的距离

document.querySelector(selectDom).offsetTop:获取元素到顶部的距离
document.querySelector(selectDom).offsetLeft:获取元素到左边的距离

  1. offsetTop:元素到offsetParent顶部的距离

  2. offsetParent:距离元素最近的一个具有定位的祖宗元素(relative,absolute,fixed),若祖宗都不符合条件,offsetParent为body。如下图所示:获取child的offsetTop,图1的offsetParent为father,图2的offsetParent为body。
    在这里插入图片描述

  3. 注意:只有元素show(渲染完成)才会计算入offsetTop,若是中间有元素数据需要异步获取,会导致最终获取的offsetTop值偏小

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

定栓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值