分享好友 资讯文章首页 资讯文章分类 切换频道

详解HTML元素的height offsetHeight clientHeight scrollTop等梳理

2023-03-23 10:17IP属地 广东佛山250建站助手
详解HTML元素的height offsetHeight clientHeight scrollTop等梳理:

这篇文章主要介绍了详解HTML元素的height、offsetHeight、clientHeight、scrollTop等梳理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

关于元素的一些属性

在前端的日常开发中,我们经常无可避免的需要获取或者监听一些页面的属性,那么我们需要经常了解一些属性代表的含义才能更好地使用这些属性。特别是一下这些:

尺寸相关:offsetHeight、clientHeight、scrollHeight;

偏移相关:offsetTop、clientTop、scrollTop、pageYOffset、scrollY;

获取相对视口位置:Element.getBoundingClientRect();

获取元素的style对象:Window.getComputedStyle(Element);

属性的定义

关于尺寸相关的属性定义:

offsetHeight: Element.offsetHeight是一个只读属性,返回的是元素对应的高度px的值,是一个整数值,不存在小数,

隐藏元素返回0;

其他返回:元素的innerHeight + padding + border + margin + 滚动条;但是不包括里面的::before or ::after伪元素;

clientHeight: Element.clientHeight是一个只读属性,返回的是元素对应的高度px的值,是一个整数值,不存在小数,

对于没有设置样式或者inline元素而言,返回的是0,

对于html元素或者怪异模式下的body,返回的是viewport高度,也就是整个页面视口高度

其他情况下:元素的innerHeight + padding;不包括border、margin、滚动条;

scrollHeight: 是一个只读属性,返回的是元素对应的高度px的值,是一个整数值,不存在小数,

在子元素不存在滚动情况下,和Element.clientHeight一样

在子元素存在滚动情况下,会是所以子元素的clientHeight高度之和 + 自身padding;

window.innerHeight: (浏览器窗口高度,不包含工具栏,菜单等,仅仅是可视区域dom的height)

window.outerHeight: (浏览器窗口高度,包含工具栏、菜单等,整个浏览器的height)

关于偏移:

offsetTop:只读属性,返回元素距离最近一个相对定位的父元素内边线的顶部距离,实际使用时可能存在不同样式引起的相对定位父元素不一致的兼容性问题。

clientTop:上边框的宽度

scrollTop:

对于滚动元素而言,就是已经滚动的距离,

对于html而言,就是window.scrollY

window.scrollY,别名:window.pageYOffset,根节点已经垂直滚动的距离

开发中所需的相关数据

获取整个页面的可视区高度:【不需要可视区外的高度】

const height = window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;

获取整个页面的高度:【包括可视区外的】

const height = document.documentElement.offsetHeight
|| document.body.offsetHeight;

获取整个页面的垂直滚动高度:

const scrollTop = document.documentElement.scrollTop
|| document.body.scrollTop;

获取元素相对根节点顶部的距离:

// 对于相对于根节点定位的元素
const top = Element.offsetTop;

// 对于非相对于根节点定位的元素,需要循环获取
getElementTop(element) {
let actualTop = element.offsetTop
let current = element.offsetParent

while (current !== null) {
actualTop += current.offsetTop
current = current.offsetParent
}
return actualTop
}

// 还有一中方法 滚动距离 + 距离视口上边距
const top = Element.getBoundingClientRect().top + window.scrollY;

获取元素相对可视区域顶部距离:

const top = Element.getBoundingClientRect().top;

设置整个页面的垂直滚动位置:

const isCSS1Compat = ((document.compatMode || "") === "CSS1Compat");
if (isCSS1Compat) {
document.documentElement.scrollTop = 100;
} else {
document.body.scrollTop = 100;
}

到此这篇关于详解HTML元素的height、offsetHeight、clientHeight、scrollTop等梳理的文章就介绍到这了,更多相关height、offsetHeight、clientHeight、scrollTop内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

来源:脚本之家

链接:https://www.jb51.net/web/748473.html

举报
收藏 0
打赏 0
评论 0
液氨冷气微推进系统首次成功用于深空探测
  记者8日从中国航天科技集团获悉,天都二号通导技术试验星冷推系统近日顺利完成卫星动量轮卸载,助推卫星完成高精度轨道姿态控制。这是液氨冷气微推进系统在深空探测领域的首次成功应用。  天都二号推进分系统由航天科技集团六院801所研制。该系统创新采用一体化模块设计的液化气恒压冷气推进方案,干重1公斤,推力10毫牛,具有推力精度高、质量轻、成本低的特点。据悉,这种高度集成化

2024-04-2918

车机天花板新高度!问界M9将搭载鸿蒙4.0智能座舱:75寸HUD视野爽翻
快科技4月17日讯,华为、赛力斯联合设计的旗舰SUV问界M9今日官宣,新车将于四季度正式推出。据悉,该车主打全尺寸、全智能和全场景。官方介绍,AITO问界M9将搭载HarmonyOS 4鸿蒙智能座舱,华为生态体系未来将升级为“车”+8+N,带来更为极致的多场景协同的超级终端体验,结合全新传感联邦,实现更多场景的联动。例如AR-HUD将与智能驾驶

2023-04-1735

干掉车顶大鼓包!禾赛科技发布舱内激光雷达:高度仅25mm
快科技4月14日消息,随着高阶辅助驾驶系统的普及,激光雷达也就成为了很多高端车型的刚需,激光雷达能为智能汽车提供高精度三维感知,与摄像头有效互补且互为冗余,提供更高的安全性,是赋能L2+及 L2++ ADAS 应用落地的关键感知硬件不过目前激光雷达由于体积限制原因,要么装在车头顶部,形成一个大鼓包;要么装载车头格栅、翼子板上,但无论那种,视觉效果都不怎么好看,开发全新

2023-04-1429

html中车牌号省份简称输入键盘的示例代码
html中车牌号省份简称输入键盘的示例代码:这篇文章主要介绍了html中车牌号省份简称输入键盘的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧原理是先写出一个按键的div,然后再根据屏幕的大小去自动适应生成键盘,效果如下图:具体实现代码如下,就不细说了。<!DOCTYPE html><ht

2023-03-2348

基于HTML代码实现图片碎片化加载功能
基于HTML代码实现图片碎片化加载功能:这篇文章主要介绍了基于HTML代码实现图片碎片化加载功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下今天来实现一个图片碎片化加载效果,效果如下:我们分为 3 个步骤来实现:定义 html 结构拆分图片编写动画函数定义html结构这里只需要一个 canvas 元素就可以了。

2023-03-2342

详解:怎么让一个HTML元素的区域铺满全屏?
详解:怎么让一个HTML元素的区域铺满全屏?:现在很多网页都做得特别绚,因此很多时候大家都想着实现一些看上去吊炸天的效果,而这些前端的效果不管怎么华丽最原始的基础还是那一行行的代码,HTML+CSS+JS就是前端的三剑客。今天我们就讲一讲我们最近的一个实践,吗就是让一副图片填满整个屏幕(除去浏览器所占区域哦)。通常有两种比较经典的效果,用到的原理之一就是这个。一个就是

2023-03-2335

详解HTML中字体使用line-height依然不能垂直居中解决办法
详解HTML中字体使用line-height依然不能垂直居中解决办法:这篇文章主要介绍了详解HTML中字体使用line-height依然不能垂直居中解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧以图片所示的效果为例,显然我们不仅要使“下一步”文本水平居中,还要垂直居

2023-03-2322

html中把多余文字转化为省略号的实现方法方法
html中把多余文字转化为省略号的实现方法方法:这篇文章主要介绍了html中把多余文字转化为省略号的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下在html中如果要把多余的文字显示为省略号,那么有以下几种方法:单行文本:<!DOCTYPE html><html lang="en"><head> <meta

2023-03-2320