美文网首页
MouseEvent的clientX、offsetX、pageX

MouseEvent的clientX、offsetX、pageX

作者: microkof | 来源:发表于2021-01-24 00:25 被阅读0次

因为X和Y道理一样,所以本文只说X

属性 说明
screenX 计算机屏幕左上角为原点,定位x轴坐标
clientX 以浏览器视口左上顶角为原点,定位 x 轴坐标
pageX 以Document 对象(即文本窗口)左上角为原点,定位x轴坐标
offsetX 以当前事件的目标对象左上角为原点,定位x轴坐标
layerX 以定位祖先(如果没有,则为Document对象)左上角为原点,定位x轴坐标

screenX

这个就厉害了,它把浏览器的自身面积也考虑进去了,你点击浏览器内容区域的顶部时,clientY可能只有几像素,但是screenY会有几十、几百像素,因为浏览器顶部有标题栏、地址栏、收藏夹栏等等。因此一般用不到。

clientX

鼠标点击的位置相对于浏览器左上顶角的坐标,也就是说,跟页面内容无关,你怎么修改、滚动页面内容,只要你鼠标不挪动,那么clientX永远是不变的。

pageX

鼠标点击的位置跟网页左上角的偏移坐标,也就是说,比如一个图片离网页顶部1000像素,那么你点击这个图片,得到的pageY就应该是1000像素再多一点。无论你怎么滚动页面,只要你去点那个图片,那么pageY就一定是1000像素再多一点。

offsetX

比如你点击一个按钮,那么offsetX就是按钮左上角跟鼠标点击位置的偏移坐标。

layerX

比如你点击了一个图片,那么系统会去找图片的定位祖先,找到之后,从祖先左上角到你鼠标点击的位置的距离,就是layerX。

鼠标拖拽效果使用哪个属性来计算?

应该使用clientX和clientY来计算。

鼠标mousedown的时候,保存下来当前鼠标相对于浏览器视口的坐标。

鼠标mousemove的时候,得到新的坐标,与原始坐标相减,得到位移量。

然后让移动的元素的top、left偏移这个量,即可。

相关文章

网友评论

      本文标题:MouseEvent的clientX、offsetX、pageX

      本文链接:https://www.haomeiwen.com/subject/danpyttx.html