(第八天)文档坐标、视口坐标和元素坐标

简介:

文档坐标和视口坐标

概念

元素的位置是以像素来度量的,向右代表X坐标的增加,向下代表Y坐标的增加。但是,有两个不同的点作为坐标系的原点:元素的X和Y坐标可以相对于文档的左上角或者相对于其中显示文档的视口的左上角。在顶级窗口和标签页中,“视口”只是实际显示文档内容的浏览器的一部分:它不包括浏览器“外壳”(如菜单,工具条件和标签页)。当讨论元素的位置时,必须弄清楚所使用的坐标时文档坐标还是视口坐标。【注】视口坐标有时也叫窗口坐标。

 举例说明:在文档坐标中如果一个元素的Y坐标时200px,并且用户已经把浏览器向下滑动75px,那么视口坐标中元素的Y坐标时125px。同理,在视口坐标中如果一个元素的X坐标是400px,并且用户已经水平滚动了视口200px,那么文档坐标中元素的X坐标是600px。

window(浏览器坐标)

(1)innerWidth/innerHeight

概念:浏览器可见区域的内宽度、高度(不含浏览器的工具栏、边框,但包含滚动条)。

浏览器兼容:IE 9或IE9+、Goggle、FireFox

console.log(window.innerWidth); 
console.log(window.innerHeight);

 (2)outerWidth/outerHeight

概念:浏览器外宽度(包含浏览器的工具栏、边框、滚动条)。

浏览器兼容:IE 9或IE9+、Goggle、FireFox

console.log(window.outerWidth);
console.log(window.outerHeight);

(3)pageXOffset/pageYOffset

概念:浏览器水平(X)或垂直(y)偏移的距离 

浏览器兼容:IE 9或IE9+、Goggle、FireFox

复制代码
console.log(window.pageXOffset);
console.log(window.pageYOffset);

/*主流浏览器都支持该属性,IE 8+,建议用上述来获取滚动条偏移*/

console.log(window.document.documentElement.scrollLeft);
console.log(window.document.documentElement.scrollTop);

/*IE8之前或更早的版本用此*/


console.log(window.document.body.scrollLeft);
console.log(window.document.body.scrollTop);

/*对怪异模式下的浏览器*/
复制代码

如图所示:

(4)scrollX/scrollY (建议废弃)

console.log(window.scrollX);
console.log(window.scrollY);

/*在IE 6+都不怎么支持此属性,所以不再建议使用*/

(5)screenLeft/screenTop

概念:浏览器内边缘到外边界之间的距离(一般来说)

  • ie浏览器的内边缘距离屏幕边缘的距离。
  • chrome浏览器的外边缘距离屏幕边缘的距离
console.log(window.screenLeft);
console.log(window.screenTop);

Screen(屏幕坐标)

(1)width/height

概念:屏幕的宽、高度(与浏览器无关,即使进行缩放其宽、高度依然不变

浏览器兼容:IE 6以及IE 6+、Goggle、FireFox

console.log(screen.width);
console.log(screen.height);

 (2)availWidth/availHeight

概念:屏幕的可用宽度、高度(availHeight与height区别在于availHeight除去了任务栏高度)

浏览器兼容:IE 6以及IE 6+、Goggle、FireFox

console.log(screen.availHeight);
console.log(screen.availWidth);

Element(元素坐标)

(1)元素坐标图解 

为了理解充分理解元素中的client-、scroll-、offset-属性利用一张图即可!

(2)获得元素坐标

复制代码
 1            function getElementPostion(e) {
 2                 var x = 0,
 3                     y = 0;
 4                 while (e != null) {
 5                     x += e.offsetLeft;
 6                     y += e.offsetTop;
 7                     e = e.offsetParent;
 8                 }
 9                 return {
10                     x: x,
11                     y: y
12                 };
13             }
复制代码






目录
相关文章
|
3月前
|
API C++ 计算机视觉
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
|
Android开发 索引 容器
【Android 应用开发】Android 组件 位置坐标 属性 ( 组件位置属性 | 父容器坐标系坐标 | 窗口坐标系坐标 | 屏幕坐标系坐标 | 触摸坐标 )
【Android 应用开发】Android 组件 位置坐标 属性 ( 组件位置属性 | 父容器坐标系坐标 | 窗口坐标系坐标 | 屏幕坐标系坐标 | 触摸坐标 )
251 0
十一、理解纹理坐标
纹理坐标就是纹理与图形的映射关系,图形中每个顶点都会关联一个纹理坐标,表示顶点需要从该位置读取纹理图像的数据。
366 0
十一、理解纹理坐标
|
JavaScript 前端开发 流计算
使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理。距离远时图片放大,距离近时图片缩小
使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理。距离远时图片放大,距离近时图片缩小
124 0
使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理。距离远时图片放大,距离近时图片缩小
Halcon示例之求一个矩形四个角点坐标的八种方法
Halcon示例之求一个矩形四个角点坐标的八种方法
1384 0
Halcon示例之求一个矩形四个角点坐标的八种方法
|
存储
opencv3寻找最小包围矩形在图像中的应用-滚动条
1 #include 2 #include 3 #include 4 5 using namespace cv; 6 using namespace std; 7 8 int g_nMinThred = 128, g_nMaxThred = 255; 9 i...
1389 0
|
JavaScript API 移动开发
|
Java
java实现判断一个经纬度坐标是否在一个多边形内(经自己亲测)
1.在高德地图上绘制的多边形;经纬度逗号分隔格式;上面是用来方便存坐标的对象;下面是方法测试;直接复制代码即可运行 public class Point { private Double x; private Double y; pu...
4394 0