html5中的行高元素,详解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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pm2 start 带参数_3款有海景天窗的国产SUV,最适合带女朋友看星星,首付3万拿下...

夏天就这么缓缓地来了,在某一个周末的晚上,约上心爱的女朋友,开上车子,一路上驰骋在无人的大桥上,放上音乐,开到目的地,打开天窗,看看星星,从诗词歌赋谈到人生哲学&#…

html仿京东快速购物导航,jQuery仿京东楼层滑动侧边栏高亮(原创)

插件描述:jQuery模仿京东侧边栏点击滑动到该楼层,同时侧边栏随着页面滚动对应导航高亮。更新时间:2017/9/30 下午2:48:37更新说明:1,添加了查看评论按钮来改变对应区的高度2,将floorList和navList作为匿名函…

华为云大数据存储的冗余方式是三副本_华为TaurusDB技术解读(转载)

近日,华为云自研关系型数据库 Taurus 公开亮相。作为华为云自研的最新一代云原生分布式数据库,Taurus 完全兼容 MySQL 8.0,采用计算与存储分离、日志即数据的架构设计,支持 1 写 15 读,性能达到原生 MySQL 的 7 倍。性…

spring html访问统计,spring-mvc访问本地html文件(示例代码)

项目中要用到在线预览word文档,刚开始考虑是要将word转成pdf文件,然后再直接在浏览器打开pdf文档即可,但是项目部署在Linux下,在网上搜了一下没有找到合适的方法,后来项目组讨论用POI生成HTML文件,但是生成…

unity 是厘米还是米_乔丹19岁才1.75米,2年增高近20公分,这个长高方法你能坚持多久...

相信现在有很多的人希望自己在长大之后能去NBA打篮球,但是因为种种原因,最后还是放弃了这个想法, 很多人是因为自己的身体素质达不到要求,比如说天赋上没有达到一个篮球运动员的身高,还有的是因为自己家庭的原因最后放…

win7变成xp风格了怎么改回_微软看了会沉默,把 Windows 10 变成经典 98 风格

众所周知「Windows 10」官方提供的主题都只是换换壁纸,所以喜欢折腾的小伙伴会选择用「UltraUXThemePatcher」来让「Windows 10」支持第三方主题,实现模仿各种风格,如 macOS、Win7、Ubuntu 等。但是由于「Windows 10」版本太多,导…

2021广东高考成绩排名如何查询,2021年广东高考个人排名怎么查询,广东高考成绩排名查询方法...

高考成绩公布后,很多家长和学生咨询我们,广东高考个人成绩排名位次如何查询:广东高考成绩排名,可以通过省招生考试院发布的广东一分一段表来查询,也可以到聚志愿网站直接输入分数查询,一分一段它显示每一个…

区块如何防篡改_深入浅出:一条数据是如何完成上链的

一笔业务数据在区块链处理的流程大致分为三个阶段:分别是上链前处理阶段、链上处理阶段和智能合约处理阶段。一.上链前处理阶段业务数据上链前需要将业务数据处理,并且对信息进行签名。这些过程可以通过对应的工具,比如序列化工具和各种椭圆曲…

锁定计算机在哪里设置方法,怎样锁定电脑?如何设置电脑锁屏【步骤详解】

我们在日常使用电脑的时候,特别是自己的私人电脑时,难免会遇到上个厕所接个水之类的杂事需要离开位置的,也许可能就一两分钟不到的时间,这么点的时间如果关机的话又觉得实在是太麻烦了,但是又不想让其它的人知道我们的…

python 安装html,python安装glob

python 里面的glob模块是怎么用的新手刚学这一块内容,不是很懂 这个模块可以用来统计每个类型物品的统计glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索,支持通配符操作,…

hough变换检测圆周_Python OpenCV 霍夫变换

霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达…

关于未来计算机的想象作文600字,未来世界的想象作文600字

我背着书包漫无目的地走在街上,刚要出门的时候突然出现了一个大洞,我本想上前一看究竟,结果被石子绊了下去,一下就落进了那个黑洞里,我的世界陷入了一片黑暗。不知过了多久,我眼睛好不容易看到一丝光亮&…

creator qt 字体太小_qt ttf 字体太小的解决方法

编译完成qt以后,发现qt的字体太小了原因是qt的dpi计算错误,这样的情况会导致qt在不同的平台上大小不一解决的方法就是设置好qt的dpi,qt是根据显示器的物理长度或者宽度于分辨率的关系来计算dpi的,所以我们设置exportQWS_DISPLAY"LinuxFB:mmWidth95:0"export QWS_SIZE…

当前超级计算机的应用方兴未艾,四川省若尔盖县高三下学期语文模拟卷(五)

四川省若尔盖县高三下学期语文模拟卷(五)姓名:________ 班级:________ 成绩:________一、选择题 (共3题;共6分)1. (2分)(2017海南模拟) 下列各句中划线成语的使用,全都正确的一项是()①与做人一样,李天来对待试验同样谨小慎微。他说&#xff…

easyui中onchange事件_React中类似Vue的“模板语法”

一、数据绑定类似 Vue 的 v-model,this.state { val: 1, companies: ["阿里巴巴", "腾讯", "百度", "京东"], };companyNameUpdate(e) { this.setState({ companyName: e…

html5着陆页模板,多用途着陆页HTML模板

资源下载此资源下载价格为5D币,请先登录资源文件列表apnew/css/animate.css , 74096apnew/css/bootstrap.min.css , 121260apnew/css/font-awesome.min.css , 27466apnew/css/jquery-ui.css , 36437apnew/css/jquery.carousel-3d.default.css , 3639apnew/css/mater…

php十六进制字符串转成字节数组_10 天 5 千 Star!21 岁本科生给程序员开发的十六进制编辑器...

【导语】:ImHex 是一款界面美观的十六进制编辑器,主要面向逆向工程师和程序员。如果你喜欢暗黑系编辑器,那它应该是你的菜。ImHex 最近在 GitHub 上非常火热,上架五天就收获了 2.5k Star,十天 5k Star。开发者介绍ImHe…

ie11用不了html5,HTML5拖放不能在IE11上运行

应用HTML5原生拖放功能,drop不适用于IE,与chrome和firefox配合使用。拖动似乎正在起作用,但对IE不感兴趣。另一个小问题 - 在IE中,我的可拖动元素周围有一个半透明的方块,但它的背景是透明的(图像是这样完成的)&#x…

扫掠两条引导线_《神都夜行录》周年庆点燃线上线下,解读国风二次元IP的成长之路...

自2016年国产二次元手游在市场实现登顶以来,该品类便一直呈明显的上升趋势,如今也依然是大小厂商乃至创业团队的布局对象。不过具体到二次元手游的玩法和IP建设上,多数产品都选择沿袭早期舰娘like的收集模式,再加上市面热门的重度…

vi新建一个shell脚本_编写第一个Shell脚本

Linux中有好多中不同的shell,bash是linux默认的shell,免费且容易使用。su切换为root权限1.创建shell脚本touch hello.sh2.编辑:vi hello.sh内容#! /bin/bash#the first programecho "hello world"3.保存并退出按Esc取消插入&#x…