screenX / Y,clientX / Y和pageX / Y有什么区别?

screenX / YclientX / YpageX / Y什么pageXcss

另外,对于iPad Safari,计算结果是否与台式机类似?仍是由于视口而有所不一样? html

若是您能指出一个例子,那就太好了。 浏览器


#1楼

  1. pageX / Y给出相对于CSS像素中<html>元素的坐标。
  2. clientX / Y以CSS像素给出相对于viewport的坐标。
  3. screenX / Y以设备像素为单位给出相对于screen的坐标。

关于您的最后一个问题,在台式机和移动浏览器上计算是否类似...为了更好地理解-在移动浏览器上,咱们须要区分两个新概念: 布局视口可视视口 。 可视视口是页面上当前显示在屏幕上的部分。 布局视口是在桌面浏览器上呈现的整个页面(包括在当前视口中不可见的全部元素)的同义词。 dom

在移动浏览器中, pageXpageY仍相对于页面以CSS像素为单位,所以您能够得到相对于文档页面的鼠标坐标。 另外一方面, clientXclientY定义相对于可视视口的鼠标坐标。 编辑器

关于可视化视口和布局视口之间的区别,这里还有另外一个stackoverflow线程: 可视化视口和布局视口之间的区别? ide

另外一个很好的资源: http : //www.quirksmode.org/mobile/viewports2.html 工具


#2楼

这是一张图片,解释pageYclientY之间的区别。 布局

pageY vs clientY

分别与pageXclientX相同。 ui


pageX/Y坐标相对于整个渲染页面(包括经过滚动隐藏的部分)的左上角, this

clientX/Y坐标则相对于页面可见部分的左上角,能够经过浏览器窗口“看到”。

观看演示

您可能永远不须要screenX/Y


#3楼

帮助个人是,直接在此页面中添加了一个事件,而后本身点击了! 在开发人员工具/ Firebug等中打开控制台,而后粘贴如下内容:

document.addEventListener('click', function(e) { console.log( 'page: ' + e.pageX + ',' + e.pageY, 'client: ' + e.clientX + ',' + e.clientY, 'screen: ' + e.screenX + ',' + e.screenY) }, false);
Click anywhere

使用此代码段,您能够在滚动,移动浏览器窗口等时跟踪点击位置。

注意,当您一直滚动到顶部时,pageX / Y和clientX / Y是相同的!


#4楼

二者之间的差别将在很大程度上取决于您当前所指的浏览器。 每一个属性都以不一样的方式或根本没有实现这些属性。 Quirksmode拥有大量有关W3C标准(如DOM和JavaScript事件)的浏览器差别的文档。


#5楼

在JavaScript中:

pageXpageYscreenXscreenYclientXclientY返回一个数字,该数字指示一个点相对于参考点的物理“ CSS像素”的数量。 事件点是用户单击的位置,参考点是左上角的点。 这些属性返回到该参考点的水平和垂直距离。

pageXpageY
相对于浏览器中完整呈现的内容区域的左上角。 该参考点在URL栏下方,而且在左上方是“后退”按钮。 这一点可能在浏览器窗口中的任何位置,而且若是页面中嵌入了嵌入式可滚动页面而且用户移动了滚动条,则实际上能够更改位置。

screenXscreenY
相对于物理屏幕/监视器的左上角,仅当您增长或减小监视器数量或监视器分辨率时,此参考点才会移动。

clientXclientY
相对于浏览器窗口内容区域( 视口 )的左上边缘。 即便用户从浏览器内部移动滚动条,此点也不会移动。

要查看哪些浏览器支持哪些属性,请执行如下操做:

http://www.quirksmode.org/dom/w3c_cssom.html#t03

w3schools拥有一个在线Java解释器和编辑器,所以您能够看到各自的功能

http://www.w3schools.com/jsref/tryit.asp?filename=try_dom_event_clientxy

<!DOCTYPE html> <html> <head> <script> function show_coords(event) { var x=event.clientX; var y=event.clientY; alert("X coords: " + x + ", Y coords: " + y); } </script> </head> <body> <p onmousedown="show_coords(event)">Click this paragraph, and an alert box will alert the x and y coordinates of the mouse pointer.</p> </body> </html>
相关文章
相关标签/搜索