js鼠标事件 clientX、clientY、offsetX、offsetY、layerX、layerY、pageX、 pageY、screenX、screenY

article/2025/9/26 16:23:09

MouseEvent的类别有以下:

  1. mousedown 鼠标按下
  2. mouseup 鼠标释放
  3. click 左键单击
  4. dblclick 左键双击
  5. mousemove 鼠标移动
  6. mouseover 鼠标经过
  7. mouseout 鼠标滑出
  8. mouseenter 鼠标进入
  9. mouseleave 鼠标离开
  10. contextmenu 右键菜单

注意:

  • 执行顺序:mousedown —> mouseup —> click
  • 区别:mouseover和mouseout子元素也会触发,可以冒泡触发
  • 区别:mouseenter和mouseleave是针对侦听的对象触发,阻止了冒泡

阻止鼠标的默认事件

  • e.preventDefault()
  • e.returnValue=false;//IE8 及以下兼容写法
  • return false;//IE兼容写法,只用作on事件阻止默认事件

去除单击右键菜单

document.body.addEventListener("contextmenu",clickHandler);
function clickHandler(e){e.preventDefault();//阻止事件默认行为console.log(e.type);
}

阻止图像默认拖拽

var img=document.querySelector("img");
img.addEventListener("mousedown",mouseHandler);
function mouseHandler(e){e.preventDefault();
}

阻止文字的拖拽和选择

document.body.addEventListener("mousedown",mouseHandler);
function mouseHandler(e){e.preventDefault();
}

阻止表单提交及重设

var bn=document.querySelector("[type=submit]");
bn.addEventListener("click",clickHandler);
function clickHandler(e){e.preventDefault();
}//或者对form来写
var form=document.querySelector("form");
form.addEventListener("submit",submitHandler);
function submitHandler(e){e.preventDefault();//e.returnValue=false;//IE8 及以下兼容写法
} 

MouseEvent对象

打印出MouseEvent对象内容:

document.body.addEventListener("mousedown",clickHandler);
function clickHandler(e){console.log(e);
}

打印结果如下(只截取了部分内容):
MouseEvent对象

  • altKey ctrlKey shiftKey metaKey 是否按键点击
  • button buttons which用来判断是鼠标的哪个键操作的
    左键对应的值为 0、1、1
    中键对应的值为 1、4、2
    右键对应的值为 2、2、3
  • timeStamp 从页面打开开始到触发事件的时间

以下内容为坐标值的说明:

clientX和clientY与x,y

  • clientX和clientY与x,y一样的,都是客户区域坐标,指鼠标的坐标,以浏览器显示区域的左上角开始,x,y是新浏览器支持

以下截图打印的结果都是div2元素的左上顶点(从边框开始)的位置坐标。
clientX,clientY

offsetX,offsetY

  • offsetX,offsetY 针对目标元素的左上角坐标(e.target),下面截图中鼠标点击有误差,不影响结果。
    offsetX、offsetY

layerX,layerY

  • layerX,layerY 往上找有定位属性的父元素的左上角(自身有定位属性的话就是相对于自身),都没有的话,就是相对于body的左上角

当元素及它的父级都没有定位属性时,以body的左上角为原点:
layerX、layerY
当元素的父级都有定位属性时,以父级的左上角为原点:
layerX、layerY
当元素自身有定位属性时,以自身的左上角为原点:
layerX、layerY

pageX, pageY

  • pageX, pageY相对页面左上角的距离
    pageX、pageY

screenX screenY

  • screenX screenY 相对屏幕左上角的位置
    screenX、screenY

总结:

  • clientX和clientY与x,y一样的,以浏览器显示区域的左上角开始,指鼠标的坐标。x,y是新浏览器支持
  • offsetX,offsetY,针对目标元素的左上角坐标,从padding开始。
  • layerX,layerY,往上找有定位属性的父元素的左上角(自身有定位属性的话就是相对于自身),都没有的话,就是相对于body的左上角
  • pageX,pageY相对页面左上角的距离
  • screenX screenY 相对屏幕左上角的位置

http://chatgpt.dhexx.cn/article/aoHmhA8C.shtml

相关文章

图解offsetX、offsetY和clientX、clientY和pageX、pageY和screenX、screenY的区别

offsetX、offsetY: 鼠标相对于事件源元素的X,Y坐标。比如说,我给黄色的盒子定义一个点击事件,则这个offset的坐标原点就在这个黄色盒子的左上角 clientX、clientY: 鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标)&…

clientX, clientY | offsetX, offsetY | pageX, pageY的区别:

clientX, clientY | offsetX, offsetY | pageX, pageY的区别: ✍ clientX, clientY:指的是鼠标点击位置距离可视窗口的坐标; 图示:在不拉滚动条的情况下 在拉滚动条的情况下: 还是点击位置距离可视窗口左上角的距离 …

clientX和clientY

####需求: 做项目中遇到一个这样的需求,点击属性菜单节点,出现显示框,显示框的位置随着鼠标点击的位置距离而改变。 ###教程: clientX 事件属性 http://www.runoob.com/jsref/event-clientx.html clientY 事件属性 h…

pageX和clientX的区别

目录 定义: 代码求证 结论: 定义: e.page:返回鼠标相对于文档页面的左上角的坐标(滚轮滑动时改变) page的大小页面滚动部分大小距离窗口可视区距离的大小(距离整个文档左上角距离的大小) e.client:返回鼠标相对于浏…

HTML 页面中的位置:clientX、screenX、offsetX、pageX

事件中鼠标的 (x,y) 位置 clientX 鼠标相对于浏览器左上角x轴的坐标; 不随滚动条滚动而改变;clientY 鼠标相对于浏览器左上角y轴的坐标; 不随滚动条滚动而改变;pageX 鼠标相对于浏览器左上角x轴的坐标; 随滚动条滚动而…

JavaScript 中一些概念理解 :clientX、clientY、offsetX、offsetY、screenX、screenY

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

JS之clientX,clientY,screenX,screenY,offsetX,offsetY区别测试

首先需要知道clientX,clientY,screenX,screenY,offsetX,offsetY 是鼠标事件对象下的几个属性. 之前也一直对这些属性搞的稀里糊涂,看文档上说的也是不太理解,反正看完一头雾水,所以自己动手亲自测试了一下;说一下自己的理解&…

自学C语言和C++,有什么好书推荐?

C语言 早在20世纪80年代,C语言就已经成为小型计算机(UNIX系统)使用的主流语言。从那以后,C语言的应用范围扩展到微型机(个人计算机)和大型机(庞然大物)。如图1.2所示,许…

C语言程序员必读的5本书

本文由 伯乐在线 - programmer_lin 翻译。未经许可,禁止转载! 英文出处: fromdev。欢迎加入 翻译组。 你正计划着通过看书来学习C语言吗?“书籍是人类最忠诚的朋友“。海明威一定知道书籍对一个人一生的重要性。书籍是知识的丰富…

学 C 语言,最经典的书有这样几本

选择C语言的理由 在过去40多年里,C语言已成为最重要、最流行的编程语言之一。它的成长归功于使用过的人都对它很满意。过去20多年里,虽然许多人都从C语言转而使用其他编程语言(如,C、Objective C、Java等)&#xff0c…

学习C语言编程,推荐你看这6本书

C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程…

初学C语言,有什么好书推荐?

全篇干货,我敢保证对你绝对有用。C语言是一种通用的,面向过程的高级编程语言,他以易于理解,简洁灵活,语法易读,成为了目前世界上最流行和最具影响力的语言之一。 那么新手在学习c语言的入门阶段,该怎么快速巩固基础? 我把自己压箱底的宝贝书单总结了一下,我真的不知…

编程书籍:适合学习C语言的 7 本书籍,零基础别再乱买了

相信有很多同学想要高考后准备大学选择计算机方向,而90%以上的高校都是从C语言开始的,那么今天我就分享一下学习C语言的书籍,从基础到深入,这几本书完全够你学习了! 1. C primer plus C primer plus作为一本被人推崇备…

最受推荐的10本C/C ++书籍

链接:https://hackr.io/blog/10-best-c-cpp-books C和C 是世界上最流行的编程语言之二。C 是C语言的扩展,这两门语言的潜力都是不可估量的,这就是为什么无论什么规模的企业都可以使用它们,因为它具有可扩展性和可移植性。随着语言…

c语言好书推荐

以下列举出一部分,欢迎补充。 图书信息大部分出自豆瓣。 以下图书均有电子版下载链接,本人法盲,如有侵权问题请告知,我将删除所有链接和电子资源。还请大家买纸质版书籍,尊重版权。 《c程序设计语言》 在计算机发展…

C语言学习书籍推荐!(附自学课程)

C语言作为学编程最好的入门语言,对一个初进程序大门的小白来说是很有帮助的,学习编程能培养一个人的逻辑思维,而C语言则是公认的最符合人们对程序的认知的一款计算机语言,很多大学都选择了使用C语言作为大学生编程的启蒙语言。曾经…

学习C语言编程必备的入门书籍

转自知乎路人甲 本篇内容将包含一些算法以及数据结构相关内容,文章中的所有推荐的书籍均来自知乎社区大牛力荐书籍、豆瓣评分较高书籍、各语言社区比较热门书籍以及京东、亚马逊、当当热销书籍的重合书籍。在接下来的文章中会涉及: 《C Primer Plus》 …

学习C语言书单推荐

很多刚入大学的小白和曾经的我一样,对学好编程充满了凌云壮志,可是被讲师打击一两个星期后,便误入崩溃边缘。 C程序设计 很多学校的老师都选择谭浩强的这本《C程序设计》,这本书个人觉得还是挺适合讲课的。这本书很适合学习语…

C++学习书籍推荐

目录 一、入门篇 二、提高篇 三、进阶篇 四、网络编程 下面推荐一些我读过的C书籍, 纯属个人建议。 一、入门篇 (1)C Primer plus, 很多人不建议看这本书,认为这本书将的不好,但是这本是真正的零基础,讲的很全面…

学习C语言,有哪些值得推荐的经典书籍?

入门经典 C Primer Plus(第6版)中文版 本书详细讲解了C语言的基本概念和编程技巧。 全书共17章。第1章、第2章介绍了C语言编程的预备知识。第3章~第15章详细讲解了C语言的相关知识,包括数据类型、格式化输入/输出、运算符、表达…