Html中Document和Event里各种坐标的定义

js获取元素到文档区域document的(横向、纵向)坐标的两种方法 获取页面中元素到文档区域document的横向、纵向坐标,在js控制元素运动的过程中,对于页面元素坐标位置的获取是经常用到的,这里主要总结下两种方法 立即下载

本文转自:http://hi.baidu.com/gle_el/blog/item/43d0f6f464577a68dcc47431.html

 

event.x   ,event.y:与触发事件的对象相关的鼠标位置的XY坐标;


offsetTop
获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算顶端位置。

offsetLeft
获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置。

offsetHeight
获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度。
IE、Opera 认为 offsetHeight = clientHeight + 滚动条 + 边框。 
NS、FF 认为 offsetHeight 是网页内容实际高度,可以小于 clientHeight。

offsetWidth
获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的宽度。

offsetParent
获取定义对象 offsetTop 和 offsetLeft 属性的容器对象的引用。

clientHeight
获取对象的高度,不计算任何边距、边框、滚动条或可能应用到该对象的补白。
大家对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,一般是最后一个工具条以下到状态栏以上的这个区域,与页面内容无关。

clientLeft
获取 offsetLeft 属性和客户区域的实际左边之间的距离。

clientTop
获取 offsetTop 属性和客户区域的实际顶端之间的距离。

clientWidth
获取对象的宽度,不计算任何边距、边框、滚动条或可能应用到该对象的补白。
SCROLL属性
scroll
设置或获取滚动是否关闭。

scrollHeight
获取对象的滚动高度。

scrollLeft
设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。

scrollTop
设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。

scrollWidth
获取对象的滚动宽度。event属性
x
设置或获取鼠标指针位置相对于父文档的 x 像素坐标。

screenX
设置或获取获取鼠标指针位置相对于用户屏幕的 x 坐标

offsetX
设置或获取鼠标指针位置相对于触发事件的对象的 x 坐标。

clientX
设置或获取鼠标指针位置相对于窗口客户区域的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条

我们这里说说四种浏览器对 document.body 的 clientHeight、offsetHeight 和 scrollHeight 的解释,这里说的是 document.body,如果是 HTML 控件,则又有不同,点击这里查看。
这四种浏览器分别为IE(Internet Explorer)、NS(Netscape)、Opera、FF(FireFox)。
clientHeight
大家对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,一般是最后一个工具条以下到状态栏以上的这个区域,与页面内容无关。
offsetHeight
IE、Opera 认为 offsetHeight = clientHeight + 滚动条 + 边框。 NS、FF 认为 offsetHeight 是网页内容实际高度,可以小于 clientHeight。
scrollHeight
IE、Opera 认为 scrollHeight 是网页内容实际高度,可以小于 clientHeight。 NS、FF 认为 scrollHeight 是网页内容高度,不过最小值是 clientHeight。 简单地说
clientHeight 就是透过浏览器看内容的这个区域高度。


NS、FF 认为 offsetHeight 和 scrollHeight 都是网页内容高度,只不过当网页内容高度小于等于 clientHeight 时,scrollHeight 的值是 clientHeight,而 offsetHeight 可以小于 clientHeight。
IE、Opera 认为 offsetHeight 是可视区域 clientHeight 滚动条加边框。scrollHeight 则是网页内容实际高度。
同理
clientWidth、offsetWidth 和 scrollWidth 的解释与上面相同,只是把高度换成宽度即可。 
但是
FF 在不同的 DOCTYPE 中对 clientHeight 的解释不同, xhtml 1 trasitional 中则不是如上解释的。其它浏览器则不存在此问题。

 

     因为现在常用主流浏览器对W3C准的不完全遵守,导致了书写js脚本经常要专注兼容问题,这也是现在js框架流行的一个原因。而鼠标位置相对于document对象的获取更是其中的代表,那真是诸侯割剧,群雄逐鹿,相当的混乱呀。
      据俺查资料所知,能用的得到鼠标的属性有如下六大对:
  

1   clientX,clientY
2   layerX,layerY
3   offsetX,offsetY
4   pageX,pageY
5   screenX,screenY
6   x,y


     如果说没得用令人头疼,那么有太多可用,那个又不好用就令人恼火了。但对于我等要靠coding来养家糊口的,没困难要上,有困难睁着通红的双眼也要上。
     开始分析之前,必须明确要获取的鼠标坐标是相对于document的,因为,js编程都是操作dom对象,所以得到document才有意义。下面开始分析解决之道。


     首先,最好的情况下,老版本的Netscape提供了pageX和pageY这一对属性,并且得到的x,y坐标刚好是相对于document而言。所以对于这类情况,代码如此:

1   if ( ! e)  var  e  =  window.Event;
2   var  x  =  e.pageX;
3   ar  y  =  e.pageY;


     现在考虑不太理想的情况,对于不提供pageX和pageY的浏览器。它们大多支持clientX/Y属性,但都是相对于window的坐标值。所以要取得适合自己用的坐标还需要处理:

1     if ( ! e)  var  e  =  window.Event;
2     var  x  =  e.clientX  +  document.documentElement.scrollLeft;
3     var  y  =  e.clientY  +  document.documentElement.scrollTop;

 

    综合两种情况,可以写一个兼容大多数主流浏览器的方法得到鼠标坐标:

 

1    if ( ! e)  var  e  =  window.Event;
2     var  x  =  e.pageX  || (e.clientX ? e.clientX + document.documentElement.scrollLeft: 0 );
3     var  y  =  e.pageY  || (e.clientY ? e.clientY + document.documentElement.scrollTop: 0 );
Autosar PNC网络管理配置-UserData的使用 之前配置的网络管理报文中的data都由ComM管理,后面客户新增了需求,最后两个byte需要发送,本文记录一下相关配置的修改能配置生成的,尽量不手码,毕竟手写一堆bug~ 阅读详情

相关推荐

Nacos启动报错No DataSource set?5分钟搞定standalone模式配置

本文针对Nacos启动时常见的“No DataSource set”报错,深入解析了其根源在于默认集群模式与外部数据库依赖。提供了两种快速解决方案:通过命令行参数“-m standalone”启动,或直接修改启动脚本配置文件,从而在5分钟内以单机模式成功启动Nacos,无需配置MySQL数据库。

weixin_29234509的博客 465

html鼠标各种坐标,HTML坐标系与鼠标事件坐标

HTML坐标系与鼠标事件坐标在开发中处理鼠标事件时,经常会碰到 offset、scroll、client 这几个关键字,每次处理页面元素的坐标和偏移前,都要网上去搜资料,还会踩一些坑,影响开发效率。这里总结一下,一劳永逸。一、图解HTML的四个坐标系统HTML有四个常见的坐标系统:screen,page,client和offset,用于描述DOM元素的Box尺寸和MouseEvent中的位置。如下...

weixin_33428613的博客 2101

SMPLify-X关键点映射与OpenPose格式转换实战

本文深入解析了SMPLify-X与OpenPose之间关键点映射与格式转换的实战方法。针对SMPL、SMPL-H、SMPLX等参数化人体模型与OpenPose 2D姿态估计标准之间的数据鸿沟,文章详细对比了双方的关键点定义差异,并提供了核心的Python转换代码与映射表构建思路。通过清晰的步骤讲解与调试技巧,帮助开发者实现3D关节数据到OpenPose标准格式的高效、准确转换,为动作捕捉、3D姿态估计等应用奠定数据基础。

weixin_29046035的博客 166

dom对象详解--document对象(一)

document对象 Document对象代表整个html文档,可用来访问页面中的所有元素,是最复杂的一个dom对象,可以说是学习好dom编程的关键所在。 Document对象是window对象的一个成员属性,通过window.document来访问,当然也可以直接使用document。 document对象常用的函数和属性可参考http://www.w3s...

weixin_34357928的博客 183

Windows显卡TDR超时导致Unity崩溃?手把手教你修改注册表延长响应时间

本文详细解析了Windows显卡TDR超时导致Unity崩溃的问题,并提供了修改注册表延长响应时间的完整解决方案。通过调整TdrDelay和TdrDdiDelay键值,开发者可以有效避免D3D11设备丢失错误,提升Unity编辑器的稳定性。文章还包含显卡驱动优化、系统性能调优等实用技巧,帮助开发者彻底解决编辑器崩溃问题。

weixin_33737774的博客 623

多模态轨迹预测:行人、车辆的交互式推理

多模态轨迹预测:行人、车辆的交互式推理 ,人工智能,计算机视觉,大模型,AI,本文围绕多模态轨迹预测中行人与车辆的交互式推理展开,介绍了其定义,即综合多种信息预测交通参与者未来多种轨迹。涵盖基础概念如轨迹表示、模态、交互关系,技术框架包括数据处理、特征提取、预测模型(物理、机器学习、深度学习模型等)及结果评估。还探讨了交互式推理方法、面临的不确定性处理等挑战、应用场景、未来发展方向、相关工具及实际案例,展现了该技术在智能交通等领域的重要性与发展潜力。​

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

html5 offsetx,event对象中offsetX,clientX,pageX,screenX的区别

1、offsetXoffset意为偏移量,是事件对象距左上角为参考原点的距离。以元素盒子模型的内容区域的左上角为参考点。不包括border。2、clientX事件对象相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条3、pageX事件对象相对于整个文档的坐标以像素为单位.4、screenX事件对象相对于设备屏幕的左上角的坐标,当改变屏幕的分辨率的时候,坐标会随之改变.以...

weixin_42357837的博客 1161

1.1 了解Spring框架 -《SSM深入解析与项目实战》

文章目录第1篇 基础概念第1章 谈谈SSM框架和Redis1.1 了解Spring框架1.1.1 如何学习Spring1.1.2 IoC(Inversion of Control 控制反转)1.1.3 AOP(Aspect Oriented Programing面向切面编程) 项目中所有的源码都可以在此链接的仓库中找到:https://github.com/chenhaoxiang/uifuture-ssm 本章非常形象的介绍了Springn中最核心的两个概念,IoC和AOP,使用了现实中的例子

谙忆-陈浩翔 2135

获取元素到文档区域document的坐标的两种方法总结

获取页面中元素到文档区域document的横向、纵向坐标的两种方法及其比较 在js控制元素运动的过程中,对于页面元素坐标位置的获取是经常用到的,这里主要总结下两种方法: 一:通过叠加元素对象和它的offsetParent(如果存在)的offsetLeft/offsetTop属性来实现 在阅读javascript高级程序设计第三版DOM部分时,了解到要获取某个元素在页面上的偏移量,需要将这个元...

weixin_30436101的博客 368

【Conda虚拟环境】新建 + 激活 + 安装 + 查看 + 退出 + 删除 + 复制 + 导出 + 导入 + 更改

(1)创建虚拟环境(2)激活虚拟环境(4)查看虚拟环境(3)退出虚拟环境(5)删除虚拟环境(6)复制虚拟环境(7)导出虚拟环境(8)导入虚拟环境(9)更改虚拟环境的安装路径(10)在指定路径下,配置虚拟环境

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 4万+

特别章节-0.1 SolidWorks导出机械臂的URDF模型各个关节坐标系设置

通过Solidworks导出机械臂的URDF模型文件,建立机械臂的各个关节坐标系的规则以及注意点,详细步骤

六眼飞鱼的博客 1万+

JavaScript与CSS — 元素的位置和各种坐标系

使用位置、尺寸和可见性基本就可以在现代浏览器中模拟绝大多数常见的用户效果了。元素的位置是实现交互效果的基础。在CSS中,元素使用偏移量来定位,它是通过元素到它父元素的左上角的偏移量来计算。CSS的坐标系如下图 页面上的所有元素都有left(水平位置)和top(垂直位置)的偏移量。为了更好理解这一点,先了解一下CSS的定位方式。基础的HTML代码是: p {     b

千里之外 1万+

osgPython

osgPython是一组 Python 模块,为 OpenSceneGraph 的 C++ 库提供了完整的 Python 接口。这意味着你可以在 Python 中调用几乎所有的 OSG 功能,从创建简单的场景到复杂的渲染效果。核心优势开发速度快:Python 语法简洁,无需编译,快速迭代易于学习:比 C++ 更易上手,适合原型开发和教学生态丰富:可以结合 NumPy、Matplotlib 等科学计算库跨平台:与 OSG 一样支持 Windows、Linux、macOS性能考虑。

深之JohnChen的专栏 454

event与document区别

‌‌event对象‌event对象‌代表,例如鼠标点击、键盘输入等。当这些事件在页面中被触发时,浏览器会创建一个event对象,并将其传递给事件处理函数。event对象包含了与事件相关的属性和方法,可以用来获取事件的类型、目标元素、坐标位置等信息。例如,可以通过event对象的button属性获取鼠标点击的位置‌。document对象‌document对象‌代表。它是DOM API的入口点,提供了对文档内容的访问和操作。

2301_80484340的博客 650

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

获取鼠标右键的坐标

重要的属性和函数 event.clientX、event.clientY 鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条。IE事件和标准事件都定义了这2个属性。 event.screenX、event.screenY 鼠标相对于用户显示器屏幕左上角的X,Y坐标。标准事件和IE事件都定义了这2个属性 document.documentElement与document.body document代表的是整个文档(对于一个网页来说包括整个网页结构),document.docu

jiqiren1994的博客 1165

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

document.documentElement 和document.body 以及其属性

js中document.documentElement 和document.body 以及其属性 (原来HTML里是document.body --XHTML里是document.documentElement ,都指的是节点(OR元素)) 在设计页面时可能经常会用到固定层的位置,这就需要获取一些html对象的坐标以更灵活的设置目标层的坐标,这里可能就会用到doc...

dashuaizhu6400的博客 151

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JS中有网页、Dom元素的一些宽高、以及Event坐标的总结

这两个属性指的是元素的可视部分宽度和高度,即padding+content,如果没有滚动条,即为元素设定的高度和宽度,如果出现滚动条,滚动条会遮盖元素的宽高,那么这两个属性就是其原本的宽高减去滚动条的宽高,如果设置了元素的box-sizing属性为border-box,且设置了边框,则这两个属性的值为原本设定的width和height减去边框宽度*2再减去滚动条的宽度。标签书写的样式,而并不能获取到该元素最终计算好的样式,这就是在读取属性值得时候和以上只读属性的区别,要获取计算好的样式,请使用。

热爱前端的菜鸟的博客 472

DOM-document-element-event

document节点对象代表整个文档,每张网页都有自己的document对象。window.document属性就指向这个对象。只要浏览器开始载入 HTML 文档,该对象就存在了,可以直接使用。 document对象有不同的办法可以获取。 正常的网页,直接使用document或window.document。 iframe框架里面的网页,使用iframe节点的contentDocument属性。...

jiankun1987的专栏 311

HTML DOM Event 对象

HTML DOM Event 对象实例哪个鼠标按钮被点击? 光标的坐标是? 被按的按键的 unicode 是? 相对于屏幕,光标的坐标是? shift 键被按了吗? 哪个元素被点击了? 哪个事件类型发生了? Event 对象Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。事件通常与函数结合使用,函数不会在事件发生前被执行!事件句柄 (Eve...

祥哥的说 343

原生js获取document_原生JS常用API整理

Anchor 对象:指HTML超链接1.修改一个链接的文本,链接和target//html部分访问 Microsoft改变超链接的文本和 URL。也改变 target 属性。target 属性的默认设置是 "_self",这意味着会在相同的窗口中打开链接。通过把 target 属性设置为 "_blank",链接将在新窗口中打开。//js部分function changeLink(){documen...

weixin_39559277的博客 332

document.documentElement 和document.body 以及clientWidth

今天有用到这块的东西  在这里分享给小伙伴们 (原来HTML里是document.body  --XHTML里是document.documentElement ,都指的是节点(OR元素) )   在设计页面时可能经常会用到固定层的位置,这就需要获取一些html对象的坐标以更灵活的设置目标层的坐标,这里可能就会用到document .body.scrollTop等属性,

weixin_41201611的博客 1444

JS【详解】screen 、document 宽高尺寸、event 坐标(含offsetHeight、offsetWidth、clientHeight、clientWidth 等的计算规则)

屏幕分辨率的高: window.screen.height屏幕分辨率的宽: window.screen.width屏幕可用工作区高度: window.screen.availHeight屏幕可用工作区宽度: window.screen.availWidth。

朝阳39的博客 621

js中document.documentElement 和document.body 以及其属性

(原来HTML里是document.body  --XHTML里是document.documentElement ,都指的是节点(OR元素) ) 在设计页面时可能经常会用到固定层的位置,这就需要获取一些html对象的坐标以更灵活的设置目标层的坐标,这里可能就会用到document .body.scrollTop等属性,但是此属性在xhtml标准网页或者更简单的说是带标签的页面

忘忧曹的专栏 385

html javascript中的各种坐标

HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth  scrollHeight: 获取对象的滚动高度。  scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离  scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离  scrollWidth:获取对象的滚动宽度  offs

loku1994的博客 855

HTML DOM教程 21-HTML DOM Event 对象

HTML DOM教程 21-HTML DOM Event 对象     1:Event 对象   Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。   事件通常与函数结合使用,函数不会在事件发生前被执行!   2:事件句柄 (Event Handlers)   HTML 4.0 的新特性之一是能够使 HTML 事件触发浏...

weixin_33753003的博客 131

html不兼容火狐怎么办,JS在IE和Firefox兼容性问题及解决方案

你对JS在IE和Firefox兼容性问题解决方法是否熟悉,这里和大家分享一下,比如现有代码中存在许多document.formName.item("itemName")这样的语句,不能在MF下运行。我们可以改用document.formName.elements["elementName"]来解决。JS在IE和Firefox兼容性问题汇编以下以IE代替InternetExplorer,以MF代替M...

weixin_42133861的博客 604
上一篇: 正则表达式笔记之三
下一篇: 正则表达式笔记之四
unicode
博客等级 码龄25年 33粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值