首页 > 其他分享 >Js中获取鼠标中的某一个点的位置以及getBoundingClientRect

Js中获取鼠标中的某一个点的位置以及getBoundingClientRect

时间:2024-09-23 09:24:55浏览次数:6  
标签:console 鼠标 getBoundingClientRect 元素 Js 边界 于视口 rect log

getBoundingClientRect() 是一个用于获取元素位置和尺寸信息的方法。它返回一个 DOMRect对象,其提供了元素的大小及其相对于视口的位置,其中包含了以下属性:

 

x:元素左边界相对于视口的 x 坐标。
y:元素上边界相对于视口的 y 坐标。
width:元素的宽度。
height:元素的高度。
top:元素上边界相对于视口顶部的距离。
right:元素右边界相对于视口左侧的距离。
bottom:元素下边界相对于视口顶部的距离。
left:元素左边界相对于视口左侧的距离。
const box = document.getElementById('box');
const rect = box.getBoundingClientRect();

console.log(rect.x);        // 元素左边界相对于视口的 x 坐标
console.log(rect.y);        // 元素上边界相对于视口的 y 坐标
console.log(rect.width);    // 元素的宽度
console.log(rect.height);   // 元素的高度
console.log(rect.top);      // 元素上边界相对于视口顶部的距离
console.log(rect.right);    // 元素右边界相对于视口左侧的距离
console.log(rect.bottom);   // 元素下边界相对于视口顶部的距离
console.log(rect.left);     // 元素左边界相对于视口左侧的距离

这个方法通常用于需要获取元素在视口中的位置和尺寸信息的场景,比如实现拖拽、定位或响应式布局等,兼容性很好,一般用滚动事件比较多。

特殊场景会用上,比如你登录了淘宝的网页,当你下拉滑块的时候,下面的图片不会立即加载出来,有一个懒加载的效果。当上面一张图片没在可视区内时,就开始加载下面的图片。

下面代码就是判断一个容器是否出现在可视窗口内:

 const box = document.getElementById('box')
 window.onscroll = function () {//window.addEventListener('scroll',()=>{})
  console.log(checkInView(box));
 }

function checkInView(dom) {
const { top, left, bottom, right } = dom.getBoundingClientRect();
 return top > 0 &&
        left > 0 &&
        bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
       right <= (window.innerWidth || 
       document.documentElement.clientWidth)
        }

 摘抄https://www.kancloud.cn/hanxuming/interview/3173354 

标签:console,鼠标,getBoundingClientRect,元素,Js,边界,于视口,rect,log
From: https://www.cnblogs.com/maoshujuan/p/18426365

相关文章

  • JS中的for...in和for...of有什么区别?
    你好,我是沐爸,欢迎点赞、收藏、评论和关注。在JavaScript中,for...in和for...of是两种用于遍历数组(或其他可迭代对象)的循环语句,但它们之间存在显著的差异。一、遍历数组for…inconstarr=['apple','banana','cherry']for(constindexinarr){console.l......
  • 【接口自动化测试】jsonpath应用:提取数据、断言、接口关联
    安装命令pipinstalljsonpath表达式importjsonpathres=jsonpath.jsonpath(obj,expr)1、返回结果要么是list,要么是False2、obj 要提取的对象,应为字典类型。报文的格式是json,必须进行数据的转换, 用json.loads()将json转换成字典类型   expr jsonpath表......
  • 面试-JS异步进阶
    面试题:......
  • 视野修炼-技术周刊第102期 | js 编译运行C
    欢迎来到第102期的【视野修炼-技术周刊】,下面是本期的精选内容简介......
  • Express、Koa、Egg.js:Node.js框架的对比与选择
    摘要:本文将对比分析Express、Koa、Egg.js这三个Node.js框架的特点、优势和应用场景,帮助读者根据实际需求选择最适合的框架。引言:在现代Web开发中,Node.js框架是不可或缺的工具。Express、Koa、Egg.js是三种流行的Node.js框架,它们各自具有独特的特点和优势。本文将详细对比分析这三......
  • fastjson反序列化漏洞
    fastjson将java中的类和json相互转化的一个工具.简单使用javabean类转jsonpublicclassFastjsonTest{publicstaticvoidmain(String[]args){Useruser=newUser();Stringjson=JSON.toJSONString(user);System.out.println(json);......
  • How to get the exact duration of an audio file in js All In One
    HowtogettheexactdurationofanaudiofileinjsAllInOneerrorsaudiodurationtimeprecisebugtime误差bug❌Reducedtimeprecision/时间精度降低Toofferprotectionagainsttimingattacksandfingerprinting,theprecisionofvideo.currentTim......
  • js逆向实战之烯牛数据请求参数加密和返回数据解密
    声明:本篇文章仅用于知识分享实战网址:https://www.xiniudata.com/industry/newest?from=data请求参数加密访问网址,往下翻翻,可以看到触发了如下的数据包,请求参数进行了加密。全局搜索list_industries_by_sort地址,有四处,都位于同一个文件中。随便点一个看看,可以看到有payload......
  • 初学者学node.js
    对于初学者来说,学习Node.js是一个很好的选择,因为它可以帮助你理解后端开发,并且由于其基于JavaScript,如果你已经有了一些前端开发的基础,那么学习曲线会相对平缓一些。以下是一些建议帮助你开始学习Node.js:1.**了解基础**:  -确保你已经熟悉了JavaScript的基本语法和概念。......
  • Go语言基础-常见编码(Json、Base64)
    编码jsonjson是go标准库里自带的序列化工具,使用了反射,效率比较低easyjson值针对预先定义好的json结构体对输入的json字符串进行纯字符串的截取,并将对应的json字段赋值给结构体easyjson-allxxx.go生成go文件中定义的结构体对应的解析xxx.go所在的package不能是mainfunce......