天天看點

滑鼠定位問題總結

談談滑鼠定位的影響因素,并總結常見的與位置相關的event事件的屬性。

滑鼠事件發生時的滑鼠定位問題即Mouse Position,由于标準的滞後及各個浏覽器廠商的實作不同,目前沒有完美的解決方案。

該問題首先受到不同浏覽器的事件模型有不同的實作方式的影響:

IE浏覽器中,有一個顯式的window.event對象,可以随時取用。

W3C相容浏覽器中,使用隐式對象,以第一個參數event的形式傳遞給事件處理函數。

其次,不同浏覽器中Event對象的位置相關屬性也有差别:

screenX 相對于電腦螢幕的左上角,滑鼠的X坐标。标準屬性,都支援。

screenY 相對于電腦螢幕的左上角,滑鼠的Y坐标。标準屬性,都支援。

clientX 相對于目前視窗可視區域(不包括視窗邊框)的左上角,滑鼠的X坐标。标準屬性,都支援。

clientY 相對于目前視窗可視區域(不包括視窗邊框)的左上角,滑鼠的Y坐标。标準屬性,都支援。

x 相對于css中有position屬性的最近的父元素,滑鼠偏移的x軸坐标。标準草案屬性,等價于clientX,IE支援

如果沒有這樣的父元素,預設以BODY元素(等價于pageX)。

y 相對于css中有position屬性的最近的父元素,滑鼠偏移的y軸坐标。标準草案屬性,等價于clientY,IE支援

如果沒有這樣的父元素,預設以BODY元素(等價于pageY)。

pageX 相對于BODY元素的左上角,滑鼠的X坐标。标準草案屬性,隻有非IE,IE9以後版本支援。

e.pageX = window.pageXOffset + e.clientX

pageY 相對于BODY元素的左上角,滑鼠的Y坐标。标準草案屬性,隻有非IE,IE9以後版本支援。

e.pageY = window.pageYOffset + e.clientY

offsetX 相對于css中有position屬性的最近的父元素,滑鼠偏移的x軸坐标。标準草案屬性,非IE支援。

offsetY 相對于css中有position屬性的最近的父元素,滑鼠偏移的Y軸坐标。标準草案屬性,非IE支援。

offsetX 相對于發出事件的元素,滑鼠偏移的x軸坐标。标準草案屬性,隻有IE支援。

offsetY 相對于發出事件的元素,滑鼠偏移的Y軸坐标。标準草案屬性,隻有IE支援。

layerX 相對于css中有position屬性的最近的父元素,滑鼠偏移的x軸坐标。非标準屬性,等價于offsetX,隻有非IE支援。

layerY 相對于css中有position屬性的最近的父元素,滑鼠偏移的y軸坐标。非标準屬性,等價于offsetY,隻有非IE支援。

scrollX,滾動條滾動的水準長度。

scrollY,滾動條滾動的垂直長度。

繼續閱讀