首先须要知道clientX,clientY,screenX,screenY,offsetX,offsetY 是鼠标事件对象下的几个属性.javascript
以前也一直对这些属性搞的稀里糊涂,看文档上说的也是不太理解,反正看完一头雾水,因此本身动手亲自测试了一下;说一下本身的理解;clientX,clientY,screenX,screenY,offsetX,offsetY 这几个属性是“鼠标事件对象”下的属性,因此必然是“鼠标事件”发生时候才会有意义;css
下面我将结合个人测试代码和结果对上面的话进行解释html
这是我写的测试例子的html代码java
添加一点样式浏览器
接下来是js部分的代码测试
这里我须要解释一下我上面说的“浏览器有效区域”这句话,下图中黑色边框区域就是浏览器的有效区域,而整个图片显示的区域就是 “显示器屏幕区域”spa
下图能够看到当鼠标移动事件onmousemove发生的时候,在id为div的里面显示clientX,clientY,screenX,screenY,的值;.net
当个人鼠标放到浏览器有效区域的 0 ,0 处,clientX为0,clientY为0;htm
而screenX为0,screenY为85,由于鼠标在“浏览器有效区域”里的x坐标就是0,y坐标也是0,而鼠标在“显示器屏幕区域”的x坐标是0,y坐标是85px对象
当我把鼠标移到div的右上角的时候,clientX为200,clientY为0;
screenX为200,screenY为85,由此可知道
clientX是鼠标相对以浏览器有效区域的的X轴坐标,
clientY是鼠标相对以浏览器有效区域的的Y轴坐标,
上图中个人鼠标在浏览器有效区域里 的x坐标是200px,y坐标是0;而screenX,screenY则是相对以整个显示屏幕区域而言的。
上图中 相对于“整个显示屏幕区域而言” 鼠标的x坐标是200px,y坐标是85px,因此screenX和screenY正是获取这两个值,因此screenX是200px,screenY是85px
当个人鼠标移动到div的右下角的时候,screeX是200px,screenY是185px,由于div自己的宽度我定义的时200px,高度100px;
接下来讲一说offsetX和offsetY属性
offsetX :当鼠标事件发生时,鼠标相对于事件源x轴的位置
offsetY:当鼠标事件发生时,鼠标相对于事件源y轴的位置
当咱们点击test按钮的时候触发onclick事件,这里test这个按钮就是事件源,因此经过offsetX和offsetY获取的坐标值就是相对于 test按钮这个事件源的;
Test按钮自身的宽100px高50px;为了容易理解,我特地给按钮添加个margin:50px让你们看得效果明显一些;
第一次鼠标是在接近test按钮的左上角点击
相信看到这里应该能明白offsetX和offsetY是获取的什么值了吧,获取的就是鼠标相对test这个按钮的x坐标和y坐标