当前位置: 首页 > news >正文

前端:常用的获取元素位置与元素尺寸的属性与方法

属性/方法描述
clientWidth返回元素内容区的宽度(不包括滚动条、边框和外边距)。对于box-sizing: border-box的元素,包含内边距。
clientHeight返回元素内容区的高度(不包括滚动条、边框和外边距)。对于box-sizing: border-box的元素,包含内边距。
offsetWidth返回元素的总宽度,包括内边距和边框,但不包括外边距。
offsetHeight返回元素的总高度,包括内边距和边框,但不包括外边距。
scrollWidth返回元素的完整内容宽度,包括可能超出视口需要滚动才能看见的部分。
scrollHeight返回元素的完整内容高度,包括可能超出视口需要滚动才能看见的部分。
offsetLeft返回元素左边缘到其最近定位父元素左边缘的距离,包括元素的margin。
offsetTop返回元素顶部到其最近定位父元素顶部的距离,包括元素的margin。
getBoundingClientRect()返回一个对象,包含元素各边界相对于视口的位置(toprightbottomleft)以及元素的宽高(widthheight),考虑了滚动、变形和CSS转换的影响。
scrollTop返回元素自身的垂直滚动条位置。
scrollLeft返回元素自身的水平滚动条位置。
window.innerWidth返回浏览器视口内部的宽度,包括滚动条(但滚动条不计入宽度内)。
window.innerHeight返回浏览器视口内部的高度,包括滚动条(但滚动条不计入高度内)。
window.scrollY返回当前视口距离页面顶部的垂直滚动偏移量。等同于window.pageYOffset
window.scrollX返回当前视口距离页面左侧的水平滚动偏移量。等同于window.pageXOffset
window.screen.width返回浏览器窗口所在的整个屏幕的宽度。
window.screen.height返回浏览器窗口所在的整个屏幕的高度。
document.documentElement.clientWidth返回HTML文档元素在视口内的可视宽度,不包括滚动条。
document.documentElement.clientHeight返回HTML文档元素在视口内的可视高度,不包括滚动条

下面有一个简单的示例:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>啦啦啦</title></head><body><div id="example" class="hidden-scrollbar"></div></body><script>const getDomInfos = () => {var exampleDiv = document.getElementById("example");//元素的内容区域宽度和高度console.log("clientWidth:", exampleDiv.clientWidth);console.log("clientHeight:", exampleDiv.clientHeight);//元素的内边距区域宽度和高度console.log("offsetWidth:", exampleDiv.offsetWidth);console.log("offsetHeight:", exampleDiv.offsetHeight);//元素的滚动区域宽度和高度console.log("scrollWidth:", exampleDiv.scrollWidth);console.log("scrollHeight:", exampleDiv.scrollHeight);//元素与父元素的距离console.log("offsetLeft:", exampleDiv.offsetLeft);console.log("offsetTop:", exampleDiv.offsetTop);//元素的边界矩形,值为一个 DOMRect 对象,具体为bottom, height, left, right, top, width, x, yconsole.log("getBoundingClientRect():",exampleDiv.getBoundingClientRect());//元素的滚动距离console.log("scrollTop:", exampleDiv.scrollTop);console.log("scrollLeft:", exampleDiv.scrollLeft);//视口的宽度和高度console.log("window.innerWidth:", window.innerWidth);console.log("window.innerHeight:", window.innerHeight);//滚动条的滚动距离console.log("window.scrollY:", window.scrollY);console.log("window.scrollX:", window.scrollX);//屏幕的宽度和高度console.log("window.screen.width:", window.screen.width);console.log("window.screen.height:", window.screen.height);//文档的宽度和高度console.log("document.documentElement.clientWidth:",document.documentElement.clientWidth);console.log("document.documentElement.clientHeight:",document.documentElement.clientHeight);};window.addEventListener("DOMContentLoaded", getDomInfos);</script><style>#example {position: relative; /* 设置为相对定位,方便观察offset属性 */width: 300px;height: 200px;padding: 20px;border: 5px solid black;box-sizing: border-box;overflow: auto;background-color: lightblue;}.hidden-scrollbar {/* 为了演示innerWidth和outerWidth的区别 */scrollbar-width: none; /* Firefox */-ms-overflow-style: none; /* Internet Explorer 10+ */overflow-x: hidden; /* 隐藏水平滚动条 */}</style>
</html>

相关文章:

  • C++之std::initializer_list详解
  • vue通过echarts实现数据可视化
  • B02、分析GC日志-6.3
  • vue2 使用vue-org-tree demo
  • 不到6毛钱的I2C总线实时时钟日历芯片LK8563
  • JVM-结合MAT工具分析OOM问题
  • 概率论基础——拉格朗日乘数法
  • 开发语言漫谈-C#
  • 【机器学习300问】64、简写出常见的激活函数及其导数?
  • Flutter入门指南
  • 使用Mac自带终端进行远程ssh连接Linux服务器
  • opencv+python(二值化图像)
  • 如何在HarmonyOS(鸿蒙操作系统)上进行应用开发
  • django celery 异步任务 异步存储
  • gitlab、jenkins安装及使用文档二
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • “大数据应用场景”之隔壁老王(连载四)
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • flask接收请求并推入栈
  • Java的Interrupt与线程中断
  • js中forEach回调同异步问题
  • miaov-React 最佳入门
  • php的插入排序,通过双层for循环
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • React-Native - 收藏集 - 掘金
  • React-redux的原理以及使用
  • Windows Containers 大冒险: 容器网络
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 讲清楚之javascript作用域
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 深入浏览器事件循环的本质
  • 推荐一个React的管理后台框架
  • 微信小程序开发问题汇总
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (顺序)容器的好伴侣 --- 容器适配器
  • (算法)求1到1亿间的质数或素数
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)项目管理杂谈-我所期望的新人
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .gitattributes 文件
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET中使用Redis (二)
  • .py文件应该怎样打开?
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • :=
  • @RequestParam详解