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

用 js 获取页面元素的位置图文总结

在做一些组件和交互时,常常需要动态获取鼠标点击位置、元素宽高和元素位置信息,网上有很多种方法,但自己没有总结过,不知道各种方法的优缺点和兼容性,在此专门的总结一下。

注意:

  1. 这些关于视觉的内容都被定义在了 W3C 的 CSSOM View Module 模块中,里面有详细的接口定义和说明,建议好好研读。
  2. 本文主要参照 W3C 文档全面了解各个属性的意义,对应接口文档用图文的方式直观显示各个属性的含义。但也会有一些自己没有完全理解和错误之处,请各位批评指正,后续会继续完善。
  3. 本文涉及到图片较多,为了获得最佳体验,建议使用电脑阅读。

阅读 W3C 规范的总结

Extensions to the Window Interface

图片纠错: scrollX = pageXOffset:表示滚动条在X轴方向上滚动的距离;scrollY = pageYOffset:表示滚动条在Y轴方向上滚动的距离

The Screen Interface

Extensions to the Document Interface

Extensions to the Element Interface

Extensions to the HTMLElement Interface

Extensions to the HTMLImageElement Interface

Extensions to the Range Interface

getBoundingClientRect()返回对象的属性

Extensions to the MouseEvent Interface

希望对你有帮助,欢迎分享和批评指正~~~~~

参考

  • CSSOM View Module
  • CSSOM视图模式(CSSOM View Module)相关整理
  • W3C DOM Core
  • UIEvent
  • 一张图彻底掌握scrollTop, offsetTop, scrollLeft, offsetLeft......
  • MDN:HTMLElement.offsetParent
  • 深入理解定位父级offsetParent及偏移大小
  • offsetParent算法分析

相关文章:

  • VS插件AnkhSVN的安装,设置和使用
  • python实现中文验证码识别方法(亲测通过)
  • EntityFramework Core笔记:保存数据(4)
  • ​Python 3 新特性:类型注解
  • 年会全记录 | Hi,菜鸟,五周岁生日快乐哇!
  • Swift 项目总结 06 基于控制器的全局状态栏管理
  • 织梦网站安装目录更换后,怎么更换上传网站中图片路径
  • 【Android Studio安装部署系列】二十四、Android studio中Gradle插件版本和Gradle版本关系...
  • 基于 HTML5 WebGL 的 3D 棉花加工监控系统
  • 16-client、offset、scroll系列
  • 数据结构之 二叉树
  • 【Touchinput 】指定输入方法类型(11)
  • iOS中父类readonly属性修改
  • μCOS-II系统之事件(event)的使用规则及MUTEX实例
  • 之所以一无所成,并不是我们不够努力
  • 分享的文章《人生如棋》
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • C++11: atomic 头文件
  • CEF与代理
  • exif信息对照
  • HTML中设置input等文本框为不可操作
  • input的行数自动增减
  • java 多线程基础, 我觉得还是有必要看看的
  • java第三方包学习之lombok
  • uni-app项目数字滚动
  • V4L2视频输入框架概述
  • Wamp集成环境 添加PHP的新版本
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 漂亮刷新控件-iOS
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​香农与信息论三大定律
  • #pragma once
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (力扣)1314.矩阵区域和
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)c++ std::pair 与 std::make
  • .net core 依赖注入的基本用发
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 中让 Task 支持带超时的异步等待
  • .php文件都打不开,打不开php文件怎么办
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • /bin/rm: 参数列表过长"的解决办法
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • [ linux ] linux 命令英文全称及解释
  • [ SNOI 2013 ] Quare
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [] 与 [[]], -gt 与 > 的比较