clientX,pageX,screenX,offsetX,layerX,x的那些事

clientX,pageX,screenX,offsetX,layerX,x的那些事
原生js:
<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>event</title>
	<style>
		body,div{
			padding: 0;
			margin: 0;
		}
		body{
			border: 100px solid #0f0;
			padding: 100px;
                }
                .father{
                        padding: 100px;
                        background: purple;
                        height: 1000px;
                        border: 100px solid #0ff;
                 }
                 .son{
                       width: 400px;
                       height: 200px;
                       background: yellow;
                  }
          </style>
 </head>
<body>
	<div id="Div" class="father">
		<div class="son"></div>
	</div>
 <script>
var DivObj = document.getElementById('Div');
DivObj.onmousemove = function(event) {
     var e = event || window.event;
     console.log(e);
}
</script>
</body>
</html>

控制台打印event对象:
chrome 浏览器
clientX/clientY:  相对可视区域的坐标(可视区域顾名思义就是肉眼可见的窗口)
pageX/pageY:  相对页面左上角的坐标(在浏览器打开的页面不出现滚动条,则pageX = clientX,pageY = clientY;若出现滚动条,则pageX  clientX ,pageY ≠ clientY)
screenX/screenY:  相对浏览器屏幕左上角的坐标(会随着浏览器窗口大小的缩放以及位置变化的影响)
offsetX/offsetY: 相对事件源元素border左上角的坐标【即:源元素border与padding的边界左上角为原点,border区域的offset将为负数】
x/y:  相对可视区域的坐标(等同clientX/clientY)
layerX/layerY:  经测试layerX/layerY与pageX/pageY相同;
movementX/movementY:  经测试,该值为当前的pageX减去上一次的pageX的值(即pageX的坐标差)



Firefox浏览器
clientX/clientY:  相对可视区域的坐标(可视区域顾名思义就是肉眼可见的窗口)
pageX/pageY:  相对页面左上角的坐标(在浏览器打开的页面不出现滚动条,则pageX = clientX,pageY = clientY;若出现滚动条,则pageX clientX ,pageY ≠ clientY)
screenX/screenY:  相对浏览器屏幕左上角的坐标(会随着浏览器窗口大小的缩放以及位置变化的影响)
offsetX/offsetY:(很多博客说firefox不支持offsetX)经测试,firefox浏览器支持offsetX;相对事件源元素border左上角的坐标【即:源元素border与padding的边界左上角为原点,border区域的offset将为负数】
x/y:  (有些博客说不支持,不过经测试,firefox浏览器支持)相对可视区域的坐标(等同clientX/clientY)
layerX/layerY: 经测试layerX/layerY与pageX/pageY相同;
movementX/movementY:  经测试,该值为当前的pageX减去上一次的pageX的值(即pageX的坐标差)

IE 11:
clientX/clientY:  相对可视区域的坐标(可视区域顾名思义就是肉眼可见的窗口)
pageX/pageY:  相对页面左上角的坐标(在浏览器打开的页面不出现滚动条,则pageX = clientX,pageY = clientY;若出现滚动条,则pageX clientX ,pageY ≠ clientY)
screenX/screenY:  相对浏览器屏幕左上角的坐标(会随着浏览器窗口大小的缩放以及位置变化的影响)
offsetX/offsetY: 相对事件源元素border左上角的坐标【即:源元素border与padding的边界左上角为原点,border区域的offset将为负数】
x/y:  (有些博客说不支持,不过经测试,firefox浏览器支持)相对可视区域的坐标(等同clientX/clientY)
layerX/layerY:  经测试layerX/layerY与clientX/clientY相同;(特殊)
movementX/movementY:  不支持(undefined)

IE 9:
clientX/clientY:  相对可视区域的坐标(可视区域顾名思义就是肉眼可见的窗口)
pageX/pageY:  相对页面左上角的坐标(在浏览器打开的页面不出现滚动条,则pageX = clientX,pageY = clientY;若出现滚动条,则pageX clientX ,pageY ≠ clientY)
screenX/screenY:  相对浏览器屏幕左上角的坐标(会随着浏览器窗口大小的缩放以及位置变化的影响)
offsetX/offsetY: 相对事件源元素border左上角的坐标【即:源元素border与padding的边界左上角为原点,border区域的offset将为负数】
x/y: (有些博客说不支持,不过经测试,firefox浏览器支持)相对可视区域的坐标(等同clientX/clientY)
layerX/layerY:  经测试layerX/layerY与pageX/pageY相同;(特殊)
movementX/movementY:  不支持(undefined)

IE 8:
clientX/clientY:  相对可视区域的坐标(可视区域顾名思义就是肉眼可见的窗口)
pageX/pageY:  不支持(undefined)
screenX/screenY:  相对浏览器屏幕左上角的坐标(会随着浏览器窗口大小的缩放以及位置变化的影响)
offsetX/offsetY: 相对事件源元素border左上角的坐标【即:源元素border与padding的边界左上角为原点,border区域的offset将为负数】
x/y:  (有些博客说不支持,不过经测试,firefox浏览器支持)相对可视区域的坐标(等同clientX/clientY)
layerX/layerY:  不支持(undefined)
movementX/movementY:  不支持(undefined)

IE 7:
clientX/clientY:  相对可视区域的坐标(可视区域顾名思义就是肉眼可见的窗口)
pageX/pageY:  不支持(undefined)
screenX/screenY:  相对浏览器屏幕左上角的坐标(会随着浏览器窗口大小的缩放以及位置变化的影响)
offsetX/offsetY: 相对事件源元素border左上角的坐标【即:源元素border与padding的边界左上角为原点,border区域的offset将为负数】
x/y:  (有些博客说不支持,不过经测试,firefox浏览器支持)相对可视区域的坐标(等同clientX/clientY)
layerX/layerY:  不支持(undefined)
movementX/movementY:  不支持(undefined)

IE 6:
clientX/clientY:  相对可视区域的坐标(可视区域顾名思义就是肉眼可见的窗口)
pageX/pageY:  不支持(undefined)
screenX/screenY:  相对浏览器屏幕左上角的坐标(会随着浏览器窗口大小的缩放以及位置变化的影响)
offsetX/offsetY: 相对事件源元素border左上角的坐标【即:源元素border与padding的边界左上角为原点,border区域的offset将为负数】
x/y:  (有些博客说不支持,不过经测试,firefox浏览器支持)相对可视区域的坐标(如果body没有border,则等同clientX/clientY)[不算body的border]
layerX/layerY:  不支持(undefined)
movementX/movementY:  不支持(undefined)


(图片模糊的话可打开控制台,找到对应图片的img url点击右键, 点击[ open in new tab] 在新页面打开即可看到清晰的img)
总结:
1.由表中可知有四个属性基本浏览器都支持:clientX/clientY、offsetX/offsetY、screenX/screenY、x/y(IE浏览器中值存在差异)
2.IE浏览器都不支持movementX/movementY
3.IE9-都不支持pageX/pageY、layerX/layerY
4.x/y与clientX/clientY同值;但IE 7下 x/y = clientX/clientY-2;IE 6 下,x/y  = clientX/clientY - body的border
5.IE浏览器只有IE 11 支持layerX/layerY,但与Chrome、Firefox不一样

jQuery 1.7.2+
clientX/clientY: 相对可视区域的鼠标坐标值
pageX/pageY: 相对页面的坐标值
offsetX/offsetY:  相对源元素的坐标值
screenX/screenY:   相对设备屏幕的坐标值

注意:
1. IE8 pageX/pageY: 不包含body的border

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值