小议layerX/Y offsetX/Y 的区别 In Chrome
2014-03-05 02:20
453 查看
大家都知道在chrome中获取鼠标位置信息的途径有很多。有screenX/Y、clinetX/Y、pageX/Y、layerX/Y、offsetX/Y。这里面的区别网上的大神都有很多的阐述了,我就不详细探究了。总结如下:
screen是获取鼠标相对于屏幕原点的位置
client是获取鼠标相对于页面可视区域原点的位置,因为是相对于可视区域的所有与滚动条无关。
page是获取鼠标相对于整个页面的原点的位置,这个就和滚动条位置有关了。
layer和offset在chrome中都是获取鼠标相对于元素原点的位置,这里的原点是以border原点计算的。
那layer和offset在chrome中难道就没有区别了吗?
当然不会这样。
当我们使用transform进行2D变换时,这两者的区别就显现出来了。一个会受变换影响而另一个则不会。
例如,一个DIV宽高都是100px。
我们将鼠标移动到这个矩形的中心,得到的数据为 layer(50,50) offset(50,50)。
如果给这个DIV进行一次2D变换添加scale(0.5),即缩小50%,那么此时我们再将鼠标移动到这个矩形的中心我们得到的数据为 layer(25,25) offset(50,50)
具体的区别相信大家都能体会出来了吧。
screen是获取鼠标相对于屏幕原点的位置
client是获取鼠标相对于页面可视区域原点的位置,因为是相对于可视区域的所有与滚动条无关。
page是获取鼠标相对于整个页面的原点的位置,这个就和滚动条位置有关了。
layer和offset在chrome中都是获取鼠标相对于元素原点的位置,这里的原点是以border原点计算的。
那layer和offset在chrome中难道就没有区别了吗?
当然不会这样。
当我们使用transform进行2D变换时,这两者的区别就显现出来了。一个会受变换影响而另一个则不会。
例如,一个DIV宽高都是100px。
我们将鼠标移动到这个矩形的中心,得到的数据为 layer(50,50) offset(50,50)。
如果给这个DIV进行一次2D变换添加scale(0.5),即缩小50%,那么此时我们再将鼠标移动到这个矩形的中心我们得到的数据为 layer(25,25) offset(50,50)
具体的区别相信大家都能体会出来了吧。
相关文章推荐
- pageX,clientX,offsetX,layerX的区别
- IE中clientX,offsetX,X,screenX的区别
- 比较offsetX, pageX,clientX,screenX的区别
- pageX与offsetX的区别
- screenX,clientX,pageX,offsetX,pageXoffset的区别
- pageX,clientX,offsetX,layerX的区别
- pageX、clientX、screenX、offsetX、layerX、x 在不同浏览器上的使用及区别
- clientX, clientY,offsetX, offsetY,screenX, screenY, x, y 的区别是什么?
- JavaScript中event的x,clientX,offsetX的区别
- offsetX和pageX的区别
- pageX,clientX,offsetX,layerX的区别
- javascript event对象的clientX,offsetX,screenX,pageX区别
- 分析x,offsetX clientX screenX,pageX,y,offsetY clientY screenY,pageY之间的区别
- pageX-layerX-clientX-offsetX的区别
- pageX,clientX,screenX,offsetX区别
- javascript offsetX与layerX区别
- javascript 中 x offsetX clientX screenX pageX的区别
- JavaScript中event对象的clientX,offsetX,screenX,pageX的区别
- [ZZ] JavaScript中event的x,clientX,offsetX的区别
- offsetX与layerX区别