在使用的 JavaScript 的过程中,对 offsetpageclient 等等所表示的距离一直不是很清楚,现趁有时间系统的学习了一下。上面所述的 offsetXpageX 等等都是事件对象 event 的属性,当有鼠标事件触发时,可以获得相应的事件对象,该对象中包含着鼠标的各种距离,现总结如下

    • offsetX:离触发事件元素左边的距离
    • pageX:离页面左边的距离
    • clientX:离浏览器左边的距离
    • screenX:离电脑显示器左边的距离

    现在就演示一下,假设有下面的页面结构

    offsetX,pageX,clientX,screenX - 图1

    上图已经基本可以明白 offsetXclientX的大小,如果没有横向的滚动条的话,pageXclientX 的大小是一样的。如果有滚动条的话,那么 pageX 的距离一般是大于 clientX 的距离的,如下

    offsetX,pageX,clientX,screenX - 图2

    上图应该已经阐释了 pageXclientX 的不同,那么只剩最后一个 screenX,这个也较好理解,就是鼠标位置离电脑显示器左侧的位置,如果浏览器是最大化的话,屏幕的左侧与浏览器的左侧相同,那么 screenX 的大小与 clientX 的大小相同,如果不是最大化,那么

    offsetX,pageX,clientX,screenX - 图3

    上面介绍的是横向距离,纵向距离也是相似,offsetYpageYclientYscreenY 计算将左侧距离换为上侧距离。

    这里还可以在扩展一个距离,scrollX 指的是横向滚动的距离,其实通过分析可以发现 offsetX,pageX,clientX,screenX - 图4 如下图所示 offsetX,pageX,clientX,screenX - 图5