scroll、offset、client —— JS三大家族

2024-01-08 03:04

本文主要是介绍scroll、offset、client —— JS三大家族,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介:

  • clientHeight: 元素的可见高度,不包括边框和滚动条,是相对于视口的大小——clientHeight = (content height) + (padding top+padding bottom)。
  • offsetHeight: 元素的高度,包括边框和滚动条,但不包括外边距 —— offsetHeight = (content height) + padding + border。
  • scrollHeight: 元素内容的总高度,包括不可见部分,包括padding,伪元素::before::after的高度,但是不包括bordermargin以及水平滚动条的高度(如果有水平滚动条的话),需要通过滚动条才能查看。

使用场景:

  • clientHeight: 当需要获取元素在视口中的可见高度时,可以使用clientHeight。
  • offsetHeight: 当需要获取元素的总高度,包括边框和滚动条时,可以使用offsetHeight。
  • scrollHeight: 当需要获取元素内容的总高度,包括不可见部分时,可以使用scrollHeight。

代码示例:

// 获取元素的可见高度
var element = document.getElementById('myElement');
var clientHeight = element.clientHeight;// 获取元素的总高度
var offsetHeight = element.offsetHeight;// 获取元素内容的总高度
var scrollHeight = element.scrollHeight;

注意事项:

1. clientHeight:

  •    - clientHeight是元素在视口中的可见高度,不包括滚动条和外边距。
  •    - 当元素的内容超出视口高度时,clientHeight不会包括溢出的部分。
  •    - 当元素的display属性为none时,clientHeight为0。

2. offsetHeight:

  •    - offsetHeight是元素的总高度,包括内容、内边距、边框,但不包括外边距。
  •    - 当元素的display属性为none时,offsetHeight为0。

3. scrollHeight:

  •    - scrollHeight是元素内容的总高度,包括不可见部分,需要通过滚动条才能查看。
  •    - 当元素的内容没有溢出时,scrollHeight等于元素的clientHeight。
  •    - 当元素的内容超出视口高度时,可以使用scrollHeight来获取整个内容的高度,以便进行滚动操作。

4.获取内容的实际高度content height:(只有height ,不包括padding、border、margin)

  • window.getComputeStyle(obj).height 

5.getBoundingClientRect()方法
        getBoundingClientRect()方法用于获取元素位置,这个方法没有参数,可以获取页面中某个元素的左,上,右和下分别相对浏览器视窗的位置。getBoundingClientRect()是DOM元素到浏览器可视范围的距离(不包含文档卷起的部分)。

        getBoundingClientRect方法返回的rect对象,rect对象具有以下属性(全部为只读):

  • x:元素左上角相对于视口的横坐标
  • y:元素左上角相对于视口的纵坐标
  • height:元素高度
  • width:元素宽度
  • left:元素左上角相对于视口的横坐标,与x属性相等
  • right:元素右边界相对于左边视口的横坐标(等于x + width)
  • top:元素顶部相对于视口的纵坐标,与y属性相等
  • bottom:元素底部相对于上边视口的纵坐标(等于y + height)

 推荐:

三大家族scroll、offset、client_offset、client、scroll三大家族!-CSDN博客

这篇关于scroll、offset、client —— JS三大家族的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/582135

相关文章

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

golang获取prometheus数据(prometheus/client_golang包)

《golang获取prometheus数据(prometheus/client_golang包)》本文主要介绍了使用Go语言的prometheus/client_golang包来获取Prometheu... 目录1. 创建链接1.1 语法1.2 完整示例2. 简单查询2.1 语法2.2 完整示例3. 范围值

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点: