event事件坐标详解(clientx, offsetx, screenX等)

本文深入解析鼠标事件中的各种坐标系统,包括相对浏览器窗口、事件源元素、屏幕以及文档的坐标获取方式。通过具体函数示例,阐述clientX、clientY、offsetX、offsetY、screenX、screenY、pageX、pageY等属性的区别与应用。
摘要由CSDN通过智能技术生成

鼠标事件(e=e||window.event)

这里写图片描述

event.clientX、event.clientY    (相对浏览器窗口)

//鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条。IE事件和标准事件都定义了这2个属性
function getMousePos(event) {
     var e = event || window.event;
     return {'x':e.clientX,'y':clientY}
}

clientX与clientY获取的是相对于当前屏幕的坐标,忽略页面滚动因素 

event.offsetX、event.offsetY

鼠标相对于事件源元素(srcElement)的X,Y坐标,只有IE事件有这2个属性,标准事件没有对应的属性。

event.screenX、event.screenY (相对于屏幕)

//鼠标相对于用户显示器屏幕左上角的X,Y坐标。标准事件和IE事件都定义了这2个属性
function getMousePos(event) {
       var e = event || window.event;
       return {'x':e.screenX,'y':screenY}
}

event.pageX、event.pageY  (相对文档)  考虑到滚动条的情

//类似于event.clientX、event.clientY,但它们使用的是文档坐标而非窗口坐标。这2个属性不是标准属性,但得到了广泛支持。IE事件中没有这2个属性。 
    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);
    }

layerX (据我所知并不常用  火狐FF特有)

鼠标相比较于当前坐标系的位置,即如果触发元素没有设置绝对定位或相对定位,以页面为参考点,如果有,将改变参考坐标系,从触发元素盒子模型的border区域的左上角为参考点
也就是当触发元素设置了相对或者绝对定位后,layerX和offsetX就幸福地生活在一起^-^,几乎相等,唯一不同就是一个从border为参考点,一个以内容为参考点 

详细信息看下图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值