鼠标事件以及clientX、offsetX、screenX、pageX、x、y、clientLeft、clientTop的区别

1,526 阅读2分钟

搬运的文章,自己收藏用,如有侵权,立马删除 鼠标事件

鼠标事件

鼠标事件有下面这几种:

  1. onclick

鼠标点击事件 box.onclick = function(e){ console.log(e) } 2. onmousedown

鼠标按下事件

box.onmousedown = function(e){ console.log(e) } 3. onmouseup

鼠标松开事件

box.onmouseup = function(e){ console.log(e) } 4. onmousemove

鼠标移动事件

box.onmousemove = function(e){ console.log(e) } 5. onmouseover

鼠标经过事件

box.onmouseover = function(e){ console.log(e) } 6. onmouseout

鼠标划出事件

box.onmouseout = function(e){ console.log(e) } 根据以上打印的e的信息,大致为:

image.png

由鼠标事件(MouseEvent)可以发现: 其中包含了许多的坐标,且每个坐标的含义都不一样。下面我们来挨个介绍常用的坐标,以及它们的含义。

一、clientX、clientY 点击位置距离当前body可视区域的x,y坐标

二、pageX、pageY 对于整个页面来说,包括了被卷去的body部分的长度

三、screenX、screenY 点击位置距离当前电脑屏幕的x,y坐标

四、offsetX、offsetY 相对于带有定位的父盒子的x,y坐标

五、x、y(图中标注的不标准 感谢追风programer发现了这个问题 ) 和clientX、clientY一样

如图所示:

image.png 补充知识点:
clientLeft、clientTop
表示内容区域的左上角相对于整个元素左上角的位置(包括边框)。(取决于边框的像数值?)
clientWidth、clientHeight
内容区域的宽高,不包括边框宽度值。包括滚动条的宽度(包括元素高度、内边距,不包括边框和外边距)
offsetLeft、offsetTop
相对于最近的祖先定位元素。滚动条的宽度也会算进去
offsetWidth、offsetHeight
整个元素的尺寸,包括滚动条的宽度(包括元素高度、内边距和边框,不包括外边距)
scrollLeft、scrollTop
元素滚动的距离大小
scrollWidth、scrollHeight
整个内容区域的宽度(包括需拉动滚动条隐藏起来的那些部分) scrollWidth = scrollTop+clientWidth # 搞懂clientWidth,offsetWidth,scrollHeight