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

鼠标事件(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为参考点,一个以内容为参考点 

详细信息看下图

event事件坐标详解(clientx, offsetx, screenX等)_第1张图片

 

你可能感兴趣的:(Javascript)