Screeny

鼠标相对于显示屏左上角的偏移

pagey

鼠标相对于页面左上角的偏移量(其值不受滚动条的影响)

不支持这个属性在IE9

但它可以通过编写点代码来计算:

复制代码代码如下所示:

计算pagex / Y如果缺少ClientX / / /可用Y

如果(event.pagex = = null original.clientx!= NULL){

eventdoc = event.target.ownerdocument文件| |;

doc = eventdoc.documentelement;

身体= eventdoc.body;

event.pagex = original.clientx +(DOC doc.scrollleft体body.scrollleft | | | |(0)-医生。clientleft | | bodybody.clientleft | | 0);

event.pagey = original.clienty +(DOC doc.scrolltop体body.scrolltop | | | |(0)文档doc.clienttop体body.clienttop | | | | 0);

}



简单的实现是。

鼠标偏移加文件浏览器窗口的滚动条隐藏的高度减去clienttop。该文件

复制代码代码如下所示:

无功pagey = event.clienty + document.documentelement。scrolltop-document.documentelement.clienttop



你为什么要减document.documentelement.clienttop

这是一个浏览器特定的文档在IE8的偏移,即使HTML设置,填充和边缘的身体不会影响其价值。

测试在IE7和得到

复制代码代码如下所示:

document.documentelement.clienttop document.documentelement.clientleft -> 2px -> 2px

document.bocy.clienttop document.body.clientleft -> 0px -> 0px



clienty

鼠标相对于浏览器视口左上角偏移。

注clienty和pagey之间的差异,以及clienty值等于pagey没有滚动条

----------------------------------分割-----------------------------------------------



layery

如果元素的位置样式不是默认的静态,我们说元素有一个位置属性。

在当前触发鼠标事件元素的祖先元素,找到最近的位置属性的元素,计算鼠标的偏移值,发现在边界的左上角的外交点的相对点。如果有位置属性的元素没有被发现,然后计算相对于当前页面的偏移是的,这是pagey相同。



不支持这个属性在IE9,但它可以以其独特的offsety取代

offsety

IE专有属性

offsety和layery之间的区别是,前者计算偏移值与边界的左上角的内点相比,所以当鼠标位于单元边界的偏移值是负值。此外,offsety不在乎是否触发事件的元素具有位置属性,它总是计算偏移量相对于元件的触发事件。



在layery和offsety之间的区别,了解两者的相容性

1要素。触发事件必须设置位置属性。

2。在元素上边境上的情况下,该layery以上的offsety对边境上的宽度值。

复制代码代码如下所示:

这是实际的element.bordertopwidth / /必须计算边界宽度的元素。

无功bordertopwidth = window.getcomputedstyle window.getcomputedstyle(元空)。BorderTopWidth:element.currentstyle.bordertopwidth;

无功offsety =事件。offsety | |(event.layery + bordertopwidth);



与layery和offsety性质,它是计算鼠标相对于绑定鼠标事件元素的偏移非常方便,这在某些时候是很有用的。

详细描述了鼠标垂直方向的偏移特性,水平方向相似,不再讨论。

以上是本文的全部内容,希望大家能喜欢。