热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JS基本篇相识JS的clientX、pageX、screenX等方法来猎取鼠标坐标详解

在一些DOM操纵中我们常常会跟元素的位置打交道,鼠标交互式一个常常用到的方面,使人扫兴的是差别的浏览器下会有差别的效果以至是有的浏览器下没效果,这篇文章就上鼠标点击位置坐标猎取做一

在一些DOM操纵中我们常常会跟元素的位置打交道,鼠标交互式一个常常用到的方面,使人扫兴的是差别的浏览器下会有差别的效果以至是有的浏览器下没效果,这篇文章就上鼠标点击位置坐标猎取做一些简朴的总结,没特别声明代码在IE8,FireFox,Chrome下举行测试兼容

要领引见

关于js鼠标事宜综合各大浏览器能猎取到坐标的属性统共以下五种:

  • event.clientX/Y
  • event.pageX/Y
  • event.offsetX/Y
  • event.layerX/Y
  • event.screenX/Y

clientX/Y

clientX/Y猎取到的是触发点相对浏览器可视地区左上角间隔,不随页面转动而转变。
兼容性:一切浏览器均支撑

pageX/Y

pageX/Y猎取到的是触发点相对文档地区左上角间隔,会跟着页面转动而转变
兼容性:除IE6/7/8不支撑外,其他浏览器均支撑

offsetX/Y

offsetX/Y猎取到是触发点相对被触发dom的左上角间隔,不过左上角基准点在差别浏览器中有区分,个中在IE中以内容区左上角为基准点不包括边框,假如触发点在边框上会返回负值,而chrome中以边框左上角为基准点。

兼容性:IE一切版本,chrome,Safari均圆满支撑,Firefox不支撑

layerX/Y

layerX/Y猎取到的是触发点相对被触发dom左上角的间隔,数值与offsetX/Y雷同,这个变量就是firefox用来替换offsetX/Y的,基准点为边框左上角,然则有个前提就是,被触发的dom须要设置为position:relative或许position:absolute,否则会返回相对html文档地区左上角的间隔。

兼容性:IE6/7/8不支撑,opera不支撑,IE9/10和Chrome、Safari均支撑

screenX/Y

screenX/Y猎取到的是触发点相对显示器屏幕左上角的间隔,不随页面转动而转变。
兼容性:一切浏览器均支撑

一张图来诠释,如图所示:
《JS基本篇--相识JS的clientX、pageX、screenX等方法来猎取鼠标坐标详解》

鼠标点击位置坐标

相对于屏幕

假如是涉及到鼠标点击肯定位置相对比较简朴,猎取到鼠标点击事宜后,事宜screenX,screenY猎取的是点击位置相对于屏幕的左侧距与上边距,不斟酌iframe要素,差别浏览器下表现的还算一致。

function getMousePos(event) {
var e = event || window.event;
return {'x':e.screenX,'y':screenY}
}

相对浏览器窗口

简朴代码即可完成,然则这是还不够,由于绝大多数情况下我们愿望猎取鼠标点击位置相对于浏览器窗口的坐标,event的clientX,clientY属性离别示意鼠标点击位置相对于文档的左侧距,上边距。因而相似的我们写出了如许的代码

function getMousePos(event) {
var e = event || window.event;
return {'x':e.clientX,'y':clientY}
}

相对文档

简朴测试也没什么题目,然则clientX与clientY猎取的是相对于当前屏幕的坐标,疏忽页面转动要素,这在许多前提下很有效,但当我们须要斟酌页面转动,也就是相对于文档(body元素)的坐标时怎样办呢?加上转动的位移就能够了,下边我们尝尝怎样盘算页面转动的位移。

其实在Firefox下题目会简朴许多,由于Firefox支撑属性pageX,与pageY属性,这两个属性已把页面转动盘算在内了。

在Chrome能够经由过程document.body.scrollLeftdocument.body.scrollTop盘算出页面转动位移,而在IE下能够经由过程document.documentElement.scrollLeft document.documentElement.scrollTop

function getMousePos(event) {
var e = event || window.event;
var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
var x = e.pageX || e.clientX + scrollX;
var y = e.pageY || e.clientY + scrollY;
//alert('x: ' + x + '\ny: ' + y);
return { 'x': x, 'y': y };
}

推荐阅读
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了css回到顶部按钮相关的知识,希望对你有一定的参考价值。 ... [详细]
  • DOM事件大全
    1.事件:js与html的交互就是通过事件的,观察者模式2.事件流:从页面中接收事件的顺序IE::事件冒泡流,事件冒泡,事件从最具体的元素接收,然后逐级向上传播,主流浏览器都支持N ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • python+selenium十:基于原生selenium的二次封装fromseleniumimportwebdriverfromselenium.webdriv ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
author-avatar
寡凫lo单鹄官方
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有