JS中scrollHeight,clientHeight、scrollTop、offsetTop等相关属性介绍

article/2025/9/7 22:12:29

一、先介绍clientHeight与scrollHeight的区别

clientHeight: 在页面上返回内容的可视高度(不包括边框,边距或滚动条)
scrollHeight: 返回整个元素的高度(包括带滚动条的隐蔽的地方)

相关概念的介绍可以参考菜鸟教程:HTML DOM 元素对象

  1. 如果当前元素没有滚动条,那么clientHeight = scrollHeight
  2. 如果当前元素存在滚动条,那么scrollHeight就会大于clientHeight

二、再介绍scrollTop与offsetTop

scrollTop: 返回当前视图中的实际元素的顶部边缘和顶部边缘之间的距离
offsetTop: 返回当前元素的相对垂直偏移位置

scrollTop只有在当前元素出现滚动条后才会大于0,通俗点说scrollTop就表示滚动条往下滚动的距离,单位是“px”
scrollHeight与scrollTop与clientHeight的关系如下:

// scrollHeight与scrollTop与clientHeight的关系如下:
scrollHeight = scrollTop + clientHeight

先看以下两张图来深入了解offsetTop的概念
当外层margin为0时的offsetTop
当外层margin为100时的offsetTop
通过上面两张图可以发现,offsetTop默认参照的都是当前页面的垂直偏移,Dom对象提供了一个属性offsetParent获取当前元素的偏移容器,通常情况下都是body对象

三、scrollTo方法

scrollTo是浏览器对象window的一个方法,该方法的用途是滚动页面元素到指定位置。
语法形式为: scrollTo(xpos,ypos)
在页面中添加了一个按钮,用来定位到第九个盒子去,那么可以获取当前第九个元素的offsetTop,然后在外层元素调用scrollTo()方法实现定位,具体代码如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>* {padding: 0;margin: 0;}#wrap {width: 300px;height: 600px;margin: 0 auto;border: 1px solid #000;overflow: auto;}.box {width: 200px;height: 300px;margin: 0 auto;background-color: rgb(222, 243, 208);border: 1px solid rgb(95, 97, 255);}</style></head><body><header style="float: left"><button id="btn">跳转到第九个盒子</button></header><div id="wrap"><div class="box" id="b1">1</div><div class="box" id="b2">2</div><div class="box" id="b3">3</div><div class="box" id="b4">4</div><div class="box" id="b5">5</div><div class="box" id="b6">6</div><div class="box" id="b7">7</div><div class="box" id="b8">8</div><div class="box" id="b9">9</div><div class="box" id="b2">10</div><div class="box" id="b11">11</div><div class="box" id="b12">12</div><div class="box" id="b13">13</div></div><script>window.onload = function () {document.addEventListener('scroll', handleScroll, true)var wrap = document.getElementById('wrap')var b2 = document.getElementById('b2')var btn = document.getElementById('btn')var scrollHeight = wrap.scrollHeightvar clientHeight = wrap.clientHeightvar scrollTop = wrap.scrollTopvar offsetTopWrap = wrap.offsetTopvar offsetTopb2 = b2.offsetTop// 点击定位到第九个盒子btn.onclick = function () {console.log('btn')var offsetTop9 = document.getElementById('b9').offsetTopwrap.scrollTo(0, offsetTop9)}function handleScroll() {scrollHeight = wrap.scrollHeightclientHeight = wrap.clientHeightscrollTop = wrap.scrollTopoffsetTopWrap = wrap.offsetTopoffsetTopb2 = b2.offsetTopconsole.log('scrollTop->', scrollTop)}console.log('clientHeight->', clientHeight)console.log('scrollHeight->', scrollHeight)console.log('offsetTopWrap->', offsetTopWrap)console.log('offsetTopb2->', offsetTopb2)}</script></body>
</html>

http://chatgpt.dhexx.cn/article/o1gUch7Q.shtml

相关文章

QQ好友辅助验证不要信

为什么说不要信&#xff1f; 首先&#xff0c;从我自己亲身经历说起&#xff1a; 我同学突然叫我帮忙弄辅助验证&#xff0c;我就好心帮忙弄嘛。 后面我也听话的照着弄&#xff0c;结果到后面。 说完语音&#xff0c;我走到教室。我就发现不对劲&#xff0c;因为我问同学…

qq跳转加好友链接

现在有谁可以做到 跳转qq加好友的链接&#xff0c;加了对方能收到验证的消息。 测试了好多链接都不行&#xff0c;对方都收不到加好友的消息 用推荐QQQ联系人分享到微信 获取链接 在换别的qq跳转加好友也收不到任何消息 请问有哪位大神可以&#xff0c;帮忙解决这个问题 小…

网页QQ 不用加好友直接聊天

1、打开腾讯推广网站&#xff1a; &#xfeff;&#xfeff; http://shang.qq.com/ 2、登录需要推广的QQ 3、选择组件样式和提示语&#xff1a; 4、复制生成的代码&#xff0c;并粘贴到网页上即可&#xff1a;

(第一期)-自动化实现全自动加好友(以QQ可能想认识的人为例)

大家好&#xff0c;我是公众号&#xff1a;狗哥文化 最近有不少网友说,之前的QQ可能想认识的人引流程序用不了,不支持最新版本的qq,问我有没有时间更新一下,刚好昨天夜晚有点时间就顺手更新了一下,最后把整个开发过程给大家一起分享一下吧 再编写这款程序之前我们先来展示一下…

QQ小程序加QQ群和加好友

QQ小程序加QQ群和加好友 使用uni-app框架开发之QQ小程序已经有好几天了。总的来说体验还算满意&#xff01;之前一直做微信小程序开发现在开发QQ小程序还算是熟门熟路&#xff0c;今天就聊聊QQ小程序如何打开群和加好友&#xff0c;QQ小程序的开发能力还是比较给力的。如果是微…

qq自动添加好友

阉割版的qq自动添加好友 ##使用方法 打开qq添加好友界面 打开这个界面局可以了&#xff0c;不用去点下一步&#xff0c;这个操作交给代码来完成。接着就去添加其他的qq好友&#xff0c;记住&#xff0c;都不需要你点下一步。 然后就是把下面的代码复制到记事本里并保存&#x…

2023 QQ强制聊天加好友临时会话接口跳转单页HTML源码

功能&#xff1a; 跳转QQ聊天界面&#xff1a;支持已开启临时会话的QQ用户进行聊天。 跳转加好友界面&#xff1a;解决了QQ设置不允许被搜索后无法加好友的问题。 WPA临时会话&#xff1a;可通过网页直接跳转至聊天界面&#xff0c;与第一个按钮实现相似的功能。 接口全是官…

不加好友,QQ强制聊天三法

可用以下三种方法强制聊天 第一种&#xff1a;生成网页法首先打开“[url]http://is.qq.com/cgi-bin/webpresence/wpa_code?uin123456789[/url]”&#xff0c;把上面的123456789换成对方的QQ号。然后选择想要的会话图片和提示。在“点击生成代码”中我们选择生成网页代码&#…

QQ自动强制加好友代码

是的&#xff0c;你也许见过强行聊天的代码&#xff1a; tencent://Message/?Uin574201314&websiteNamewww.oicqzone.com&Menuyes但是你应该不知道&#xff0c;还有强行加好友的代码&#xff1a; tencent://AddContact/fromId45&fromSubId1&subcmdall&u…

设置页面包含子页面iframe用法

iframe用法 iframe作用是文档中的文档&#xff0c;就是页面去包含另一个文件&#xff0c;一般用来包含另一个页面。 Html5不支持frameset标签&#xff0c;但还是支持iframe标签的&#xff08;部分属性不支持了但也能用&#xff09;。用法&#xff1a; 为了方便页面布局一般配…

PHP实现iframe跨站替换文字/替换iframe网站文字的方法

简介 可将某个页面 用框架标签放到自己页面中&#xff0c;但其中有些链接&#xff0c;或者文字不想要&#xff0c;即可替换掉他们。 实例代码 <?php $site$_SERVER[QUERY_STRING]; $ch curl_init();curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLO…

iframe是什么?iframe用法详解。

经常和网站打交道或者经常建站的朋友对iframe肯定不陌生&#xff0c;网站有了iframe会变得更加美观、大气。对于初涉互联网的新手来说&#xff0c;iframe并不熟悉&#xff0c;那么iframe到底是什么&#xff1f;iframe用法有哪些呢&#xff1f; iframe是什么 iframe就是我们常用…

iframe属性与用法

iframe标签 小明说&#xff0c;iframe是能耗最高的一个元素&#xff0c;尽量减少使用。 小蓝说&#xff0c;iframe的安全性太差&#xff0c;尽量减少使用。 虽然他们说的是真的&#xff0c;但是iframe的强大功能是不容忽视的&#xff0c;而且现在不乏公司正在使用它。 标签规…

iframe的简单使用

看人家写的真的是摸不着头脑。自己写、还是清楚 局部数据的刷新&#xff1a;可以使用ajax。这里只是简单的演示 只作&#xff1a;例子使用、简单演示页面跳转 a标签中target属性和iframe中的name对应。相当于将该链接加载到当前的iframe界面 我这里使用maven项目演示 index.…

iframe是什么?iframe用法详解

经常和网站打交道或者经常建站的朋友对iframe肯定不陌生&#xff0c;网站有了iframe会变得更加美观、大气。对于初涉互联网的新手来说&#xff0c;iframe并不熟悉&#xff0c;那么iframe到底是什么&#xff1f;iframe用法有哪些呢&#xff1f; iframe是什么 iframe就是我们常…

MD5加密解密算法 MD5Utils

import java.security.MessageDigest;public class MD5Utils {/*** MD5加码 生成32位md5码 */public static String string2MD5(String inStr) {MessageDigest md5 null;try {md5 MessageDigest.getInstance("MD5");} catch (Exception e) {System.out.printl…

md5 java_JAVA使用MD5加密解密

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。 这波解释是不是很正经严肃,好像看懂了,但是如果有人问MD5是什么,MD5就是...就是小编也不知道,通俗一…

Md5(base64)加密与解密实战

Md5&#xff08;base64&#xff09;加密与解密实战 在对某一个CMS系统进行安全检测时&#xff0c;通过注入点获取其管理员表中的管理员和密码数据&#xff0c;但由于不知道该密码数据采用何种加密方式&#xff0c;虽然知道CMS系统管理后台&#xff0c;但苦于没有破解管理员的密…

css下拉菜单汇总案例

1.基础的下拉菜单 将鼠标移到元素上时出现的下拉框。效果如下&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"I…