关于事件的属性
event 有几个关于位置的属性常用
offsetX
clientX
pageX
screenX
- 其中一些兼容性有问题,但是经常要解决的是
offsetX
的问题 -
clientX
和screenX
是标准有的 -
offsetX
是IE特有的
offset 兼容性方案
function getOffsetX(event) {
var e = event || window.event
if (e.offsetX) {
return e.offsetX
}else {
var rect = obj.getBoundingClientRect();
var clientX = e.clientX;
return clientX - rect.left
}
}
- 通过测试发现
-
offsetX
是 点击点 相对于 元素内边框的 -
clientX - rect.left
是 点击点 相对于 元素外边框的(不论是否有margin)
ele.getBoundingClientRect()
- 获得当前元素的大小和相对于视口的位置
-
offsetX
还可以用另一种方式获取e.pageX - rect.left - window.pageXOffset
- 当前窗口的滚动距离使用
window.pageXOffset
,更兼容