在一个有垂直滚动条的页面内的控制台中打印以下代码:

  1. document.addEventListener('mousemove', function(e){
  2. console.log("screenY",e.screenY,"window.screenY",window.screenY,"e.clinetY",e.clientY,"event.pageY;",e.pageY)
  3. })

无标题.png
screenY:**参考点是用户屏幕的左上角。**

在以上鼠标的滑动等事件中,e.screenY 返回鼠标在全局(显示屏幕)中的垂直坐标(偏移量);

window.screenY 返回浏览器顶部距离系统桌面顶部的垂直距离;

在屏幕的触摸事件中,(每 个 Touch 对象代表一个触点,可通过e.touches[0]获取)Touch.screenY 返回触点相对于屏幕上边沿的Y坐标。不包含页面滚动的偏移量。

clientY: **参考点是可见视区的左上角(浏览器可见内容区域的左上角,参照点会随滚动条的移动而移动)。**

在以上鼠标的滑动等事件中,是只读属性, 它提供事件发生时的应用客户端区域的垂直坐标。例如,当你点击客户端区域的左上角时,鼠标事件的 clientY 值为 0 ,这一值与页面是否有垂直滚动无关。

在屏幕的触摸事件中,(每 个 Touch 对象代表一个触点,可通过e.touches[0]获取)Touch.clientY 返回触点相对于可见视区上边沿的的Y坐标; 不包括任何滚动偏移;这个值会根据用户对可见视区的缩放行为而发生变化.

pageY:** **参考点是可见视区的左上角(浏览器可见内容区域的左上角,参照点不会随滚动条的移动而移动!)。

在以上鼠标的滑动等事件中,**pageY**是一个只读属性,它返回触发事件的位置相对于整个 document 的 Y 坐标值。由于其参考物是整个 dom,所以这个值受页面垂直方向的滚动影响。例如:当你垂直方向向下滚动了 50 pixel,那么你在顶端进行点击的时候,获取的**pageY**为 50pixed 而不是 0。

在屏幕的触摸事件中,(每 个 Touch 对象代表一个触点,可通过e.touches[0]获取)Touch.pageY 返回触点相对于HTML文档上边沿的的Y坐标. 和 client属性不同, 这个值是相对于整个html文档的坐标, 和用户滚动位置无关. 因此当存在垂直滚动的偏移时, 这个值包含了垂直滚动的偏移。

_