搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

本文详细介绍了HTML元素的clientHeight、offsetHeight、scrollHeight、scrollTop和offsetTop等属性的区别与联系,帮助读者理解这些属性如何反映元素的高度、滚动状态及位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网页可见区域高:document.body.clientHeight

网页正文全文高:document.body.scrollHeight
网页可见区域高(包括边线的高):document.body.offsetHeight
网页被卷去的高:document.body.scrollTop

屏幕分辨率高:window.screen.height

每个HTML元素都具有clientHeight offsetHeight scrollHeight offsetTop scrollTop 这5个和元素高度、滚动、位置相关的属性,单凭单词很难搞清楚分别代表什么意思之间有什么区别。通过阅读它们的文档总结出规律如下:
clientHeight和offsetHeight属性和元素的滚动、位置没有关系它代表元素的高度,其中:
clientHeight:包括padding但不包括border、水平滚动条、margin的元素的高度。对于inline的元素这个属性一直是0,单位px,只读元素。

offsetHeight:包括padding、border、水平滚动条,但不包括margin的元素的高度。对于inline的元素这个属性一直是0,单位px,只读元素。

接下来讨论出现有滚动条时的情况:
当本元素的子元素比本元素高且overflow=scroll时,本元素会scroll,这时:
scrollHeight: 因为子元素比父元素高,父元素不想被子元素撑的一样高就显示出了滚动条,在滚动的过程中本元素有部分被隐藏了,scrollHeight代表包括当前不可见部分的元素的高度。而可见部分的高度其实就是clientHeight,也就是scrollHeight>=clientHeight恒成立。在有滚动条时讨论scrollHeight才有意义,在没有滚动条时scrollHeight==clientHeight恒成立。单位px,只读元素。

scrollTop: 代表在有滚动条时,滚动条向下滚动的距离也就是元素顶部被遮住部分的高度。在没有滚动条时scrollTop==0恒成立。单位px,可读可设置。
offsetTop: 当前元素顶部距离最近父元素顶部的距离,和有没有滚动条没有关系。单位px,只读元素。

offsetTop: 当前元素顶部距离最近父元素顶部的距离,和有没有滚动条没有关系。单位px,只读元素。

您使用的 `<i class="fa-solid fa-heart-circle-plus"></i>` 图标可能未正确显示,原因通常是字体awesome 库没有正确引入或存在样式冲突。您可以检查以下几点: 1. **确保 Font Awesome 引入**: 在项目中确保已经正确引用了 Font Awesome 的 CSS 文件,可以通过以下几种方式引入: - 在 `head` 标签中添加以下链接: ```html <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> ``` - 如果使用 npm 安装,请确保已安装并导入相关样式文件: ```bash npm install --save @fortawesome/fontawesome-svg-core npm install --save @fortawesome/free-solid-svg-icons npm install --save @fortawesome/vue-fontawesome ``` 然后在项目的主入口文件(如 `main.js`)中引入: ```javascript import { library } from '@fortawesome/fontawesome-svg-core' import { fas } from '@fortawesome/free-solid-svg-icons' import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' library.add(fas) app.component('font-awesome-icon', FontAwesomeIcon) ``` 2. **检查类名是否正确**: 确保类名拼写正确,并且与 Font Awesome 版本中的定义一致。如果使用的是较新版本的 Font Awesome,建议查看其官方文档以确认类名。 3. **解决潜在的样式冲突**: 检查是否有其他 CSS 规则影响到该图标,特别是可能会覆盖默认样式的部分。可以使用浏览器的开发者工具(通常按 F12 打开)检查元素的实际样式应用情况。 如果您确认以上步骤都没有问题,但图标仍不显示,建议尝试替换一个简单的测试图标(如 `<i class="fas fa-heart"></i>`),看看是否存在通用问题。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值