首页 > 其他分享 >js获取元素位置

js获取元素位置

时间:2024-04-15 15:02:31浏览次数:24  
标签:const top 元素 element 获取 js rect left


js获取元素位置

JavaScript中获取元素位置的方法有以下几种实现方式:

  1.  使用getBoundingClientRect()方法:

    const element = document.getElementById('elementId'); const rect = element.getBoundingClientRect(); const position = { top: rect.top, left: rect.left, bottom: rect.bottom, right: rect.right, width: rect.width || rect.right - rect.left, height: rect.height || rect.bottom - rect.top };

    这种方法返回一个DOMRect对象,包含元素的位置、大小和其他属性。

     

  2.  使用offsetTopoffsetLeft属性: 

    const element = document.getElementById('elementId'); const top = element.offsetTop; const left = element.offsetLeft;

    这种方法返回元素相对于其定位父元素的上偏移和左偏移。

     

     

  3.  使用getComputedStyle()方法:

    const element = document.getElementById('elementId'); const computedStyle = getComputedStyle(element); const top = parseInt(computedStyle.top, 10); const left = parseInt(computedStyle.left, 10);

    这种方法返回一个包含元素的计算样式的CSSStyleDeclaration对象,可以获取元素的位置等样式属性。

     

     

  4.  使用scrollLeftscrollTop属性获取元素相对于其父元素的滚动偏移量:

    const element = document.getElementById('elementId'); const scrollLeft = element.scrollLeft; const scrollTop = element.scrollTop;

    这种方法适用于包含滚动条的元素或者具有滚动的父元素。

     

     

  5.  使用getBoundingClientRect()方法结合滚动位置获取元素相对于文档的绝对位置:

    const element = document.getElementById('elementId'); const rect = element.getBoundingClientRect(); const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft; const scrollTop = window.pageYOffset || document.documentElement.scrollTop; const position = { top: rect.top + scrollTop, left: rect.left + scrollLeft, bottom: rect.bottom + scrollTop, right: rect.right + scrollLeft, width: rect.width || rect.right - rect.left, height: rect.height || rect.bottom - rect.top };

    这种方法可以获取元素相对于整个文档的绝对位置,考虑了滚动条的滚动情况。

     

     

  这些方法可以根据实际需求选择使用,根据不同的元素结构和要求,可以灵活组合使用。

标签:const,top,元素,element,获取,js,rect,left
From: https://www.cnblogs.com/DeerLin/p/18135968

相关文章

  • 无痛接入flow.js
    前言:针对项目越来越大,js弱类型、动态类型捉襟见肘,导致项目维护成本越来越高,typeScript接入学习成本及vue兼容性等问题,考虑引入flow.js优点:静态类型检查,避免类型编码错误不影响线上代码打包,对线上代码影响小接入后可仅在需要的文件中使用项目接入流程如下:使用yarn、babel的......
  • uniapp小程序页面实现元素与胶囊进行居中对齐
    无论是否为uni,关键在于获取胶囊中点的位置,如果是原生小程序根据小程序文档获取,其余逻辑处理是一致的代码语法都只是技术选择,重点是逻辑处理,对于技术的运用,代码技术好比是积木,好的程序就是好的组合代码,利用技术的特点进行组合,1.效果实现代码fixedTop(){lets......
  • jsoncpp的基本操作
    基本概念: 2.jsoncpp的使用jsoncpp库中的类被定义到了一个Json命名空间中,建议在使用这个库的时候先声明这个命名空间: usingnamespaceJson;使用jsoncpp库解析json格式的数据,我们只需要掌握三个类:Value类:将json支持的数据类型进行了包装,最终得到一个Value类型FastWrite......
  • js获取时间差,返回格式为01天02小时03秒
    //获取时间差返回值格式:01天02小时30秒exportfunctioncaclulateDiffTime(start,end):string{start=newDate(start).getTime();end=newDate(end).getTime();letstaytimeGap=end-start;if(staytimeGap<0){staytimeGap=start-end;}i......
  • iframe跨域,获取iframe中元素
    1.需求让iframe嵌入页面,并且没有滚动条,也就是相当于两个页面拼接在一起跨域解决,通过框架配置代理proxy:{'/medical':{target:'https://example.com',changeOrigin:true,pathRewrite:{'^/medical':'',},},}......
  • 30 天精通 RxJS (19):实践范例 - 简易 Auto Complete 实作
    今天我们要做一个RxJS的经典范例-自动完成(AutoComplete),自动完成在实务上的应用非常广泛,几乎随处可见这样的功能,只要是跟表单、搜寻相关的都会看到。虽然是个很常见的功能,但多数的工程师都只是直接套套件来完成,很少有人会自己从头到尾把完整的逻辑写一次。如果有自己......
  • 30 天精通 RxJS (18):可观察运算符 - switchMap, mergeMap, concatMap
    今天我们要讲三个非常重要的operators,这三个operators在很多的RxJS相关的library的使用示例上都会看到。很多初学者在使用这些library时,看到这三个operators很可能就放弃了,但其实如果有把这个系列的文章完整看过的话,现在应该就能很好接受跟理解。OperatorsconcatMapconcat......
  • js混淆简介
      JS混淆技术通过降低JS程序的可读性来对网站进行取证分析。JavaScript(JS)混淆在流行网站中非常普遍。最近的研究表明,Alexa前10万个网站中95.90%的网站至少包含一个混淆的JS程序,混淆的JS程序给各种任务带来了挑战。JS混淆技术通过降低JS程序的可读性来阻止对网站源......
  • Java调用第三方接口获取数据并存储,思路加代码
    思路:1.根据第三方接口返回的字段来创建实体类,用来接收数据2.建立连接,提供两种方式。来获取数据3.实体类转换并存储方法一:URL建立连接进行接收数据依赖<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifa......
  • 如何解决node.js运行mysql报错?
    首先检查mysql客户端的密码是否正确正确后提示我没有安装mysql模板 在文件目录终端下输入cnpminstall-gmysql进行安装这时候运行还是显示错误上网搜了一下说是登录数据库的客户端跟mysql8.0不兼容了,mysql8.0密码认证采用了新的密码格式[解决方法]打开命令管理器进入m......