javascript获取文档坐标和视口坐标

  元素的位置是以像素度量的,向右代表X坐标的增加,向下代表Y坐标的增加,但是,有两个不同的点作为坐标系的原点:元素的X和Y坐标可以相对于文档的左上角或者相对于在职中显示文档的视口的左上角。

 

  在定级窗口和标签页中,”视口“只是实际显示文档内容的浏览器的一部分:它不包括浏览器的“外壳”(如菜单、工具条和标签页)。

         针对框架也中显示的文档,是口试定了框架页的<iframe>元素。无论在何种情况下,当讨论元素的位置是,必须弄清楚所使用的坐标是文档坐标还是视口坐标。(注意,视口坐标有事也叫作窗口坐标)

         如果文档比视口要小,或者说还未出现滚动,则文档的左上角就是视口的左上角,文档和视口坐标系统是同一个。但是一般来说,要在两种坐标系之间互相转换,必须加上或减去滚动的偏移量(scroll offset)。例如,在文档坐标中如果一个元素的Y坐标是200像素,并且用户已经把浏览器向下滚动了75像素,那么视口坐标中元素的Y坐标就是125像素。同样,在视口坐标中如果一个元素的X坐标是400像素,并且用户已经水平滚动了视口200像素,那么文档坐标中像素的X坐标中元素的X坐标就是600像素。

         文档坐标比视口坐标更加基础,并且在用户滚动是他们不会发生变化。不过,在客户端编程中使用视口坐标是非常常见的。当使用CSS指定元素的位置时运用了文档坐标。但是最简单的查询元素位置的方法:getBoundingClientRect()返回视口坐标中的位置。类似的,当为鼠标事件注册事件处理程序函数时,报告的鼠标指针的坐标是在视口坐标系中。

为了在坐标系中转换,我们需要判定浏览器窗口的滚动条的位置。Window对象的pageXoffset和pageYOffset属性在所有的浏览器中提供这些值,除了IE8及更早的版本以外。IE(和所有现代浏览器)也可以通过scrollLeft和scrollTop属性来获得滚动条的位置。令人迷惑的是,正常的情况下通过查找文档的根节点(document.documentElement)来获取这些属性,但是在怪异模式下,必须在文档的<body>元素(documeng.body)上查询它们。以下显示了如何简便的查询滚动条的位置。

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

functon getScrollOffsets(w){
w = w || window;
var sLeft,sTop;
if(w.pageXOffset != null) {
sLeft = w.pageXOffset;
sTop = w.pageYOffset;
return {x:sLeft,y:sTop};
}
if(document.compatMode == "CSS1Compat"){
sLeft = document.documentElement.scrollLeft == 0 ? document.body.scrollLeft : document.documentElement.scrollLeft;
sTop = document.documentElement.scrollTop == 0 ? document.body.scrollTop : document.documentElement.scrollTop;
return {x:sLeft,y:sTop};
}else if(document.compatMode == "BackCompat"){
sLeft = document.body.scrollLeft;
sTop = document.body.scrollTop;
return {x:sLeft,y:sTop};
}
}

有时候能够判定视口的尺寸也是非常有用的,例如,为了确定文档的案部分是当前可见的。利用滚动偏移量查询视口的尺寸的简单方法在IE8及更早版本中无法工作,而且该技术在IE中的运行法师还要取决于浏览器是否处于怪异模式还是标准模式。

window下的属性:

innerHeight:包括滚动条在内的窗口内容部分的高度

innerWidth:包括滚动条在内的窗口内容部分的宽度

outerHeight:整个浏览器的高度,包括界面所有组成部分。

outerWidth:整个浏览器的宽度,包括界面所有组成部分。

pageXOffset:浏览器窗口的滚动条X轴的位置

pageYOffset:浏览器窗口的滚动条Y轴的位置

scrollX:浏览器窗口的滚动条X轴的位置

scrollY:浏览器窗口的滚动条Y轴的位置

属性

document.documentElement document.body
clientHeight 视口内可见内容的大小,不包括滚动的部分和滚动条。
clientWidth
clientLeft  
clientTop
offsetHeight 内容大小,并且包括滚动条。
offsetWidth
offsetLeft
offsetTop
scrollHeight 滚动内容的大小,包括滚动的部分,但不包括滚动条。
scrollWidth
scrollTop
scrollWidth

查询窗口的视口尺寸:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

function getViewportSize(w){
  w = w || window;
  var cWidth,cHeight;
  if(w.innerWidth != null){
    cWidth = w.innerWidht;
    cHeight = w.innerHeight;
    return {w:cWidth,h:w.cHeight};
  }
  if(document.compatMode == "CSS1Compat"){
    cWidth = document.documentElement.clientWidth;
    cHeight = doument.documentElement.clientHeight;
    return {w:cWidth,h:w.cHeight};
  }else if(document.compatMode == "BackCompat"){
    cWidth = document.body.clientWidth;
    cHeight = doument.body.clientHeight;
    return {w:cWidth,h:w.cHeight};
  }
}

 

以上所述就是本文的全部内容了,希望大家能够喜欢。

时间: 2024-11-18 18:42:21

javascript获取文档坐标和视口坐标的相关文章

javascript 获取文档所有图片

javascript 获取文档所有图片 function updateUI(){     var imgs = document.getElementsByTagName("img");     for(var i=0, len=imgs.length; i < len; i++){         imgs[i].title = document.title + " image " + i;     }       var msg = document.ge

javascript获取文档坐标和视口坐标_javascript技巧

元素的位置是以像素度量的,向右代表X坐标的增加,向下代表Y坐标的增加,但是,有两个不同的点作为坐标系的原点:元素的X和Y坐标可以相对于文档的左上角或者相对于在职中显示文档的视口的左上角. 在定级窗口和标签页中,"视口"只是实际显示文档内容的浏览器的一部分:它不包括浏览器的"外壳"(如菜单.工具条和标签页). 针对框架也中显示的文档,是口试定了框架页的<iframe>元素.无论在何种情况下,当讨论元素的位置是,必须弄清楚所使用的坐标是文档坐标还是视口坐标.

js获取元素到文档区域document的坐标方法

  获取页面中元素到文档区域document的横向.纵向坐标的两种方法及其比较 在js控制元素运动的过程中,对于页面元素坐标位置的获取是经常用到的,这里主要总结下两种方法: 一:通过叠加元素对象和它的offsetParent(如果存在)的offsetLeft/offsetTop属性来实现 在阅读javascript高级程序设计第三版DOM部分时,了解到要获取某个元素在页面上的偏移量,需要将这个元素的offsetLeft和offsetTop与其offsetParent的相同属性相加,一直循环直至根

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

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

JS如何获取文档节点呢?

问题描述 JS如何获取文档节点呢? Javascript如何获取文档节点啊,找了半天发现都是一些元素.文本.属性节点的访问方法,如何访问文档节点呢? 解决方案 http://www.php186.com/content/article/js/25289.html看看 解决方案二: http://www.php186.com/content/article/js/25289.html 解决方案三: document.documentElement 解决方案四: 什么叫文档节点呢?xml的? 解决方

[sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表

写在前面 最近对文档库的知识点进行了整理,也就有了这篇文章,当时查找这些接口,并用在实践中,确实废了一些功夫,也为了让更多的人走更少的弯路. 系列文章 sharepoint环境安装过程中几点需要注意的地方 Rest API的简单应用 rest api方式实现对文档库的管理 通过WebClient模拟post上传文件到服务器 WebHttpRequest在sharepoint文档库中的使用 [sharepoint]Rest api相关知识(转) [sharepoint]根据用户名获取该用户的权限

获取文档属性问题。

问题描述 如何用公式获取文档属性中要素(meta)标签下的identifier值?

jquery获取文档高度和窗口高度汇总_jquery

jquery获取窗口高度和窗口高度,$(document).height().$(window).height() $(document).height():整个网页的文档高度 $(window).height():浏览器可视窗口的高度 $(window).scrollTop():浏览器可视窗口顶端距离网页顶端的高度(垂直偏移) $(document.body).height();//浏览器当前窗口文档body的高度 $(document.body).outerHeight(true);//浏览

jquery获取文档高度和窗口高度的例子

jquery获取文档高度和窗口高度,$(document).height().$(window).height() $(document).height():整个网页的文档高度 $(window).height():浏览器可视窗口的高度 $(window).scrollTop():浏览器可视窗口顶端距离网页顶端的高度(垂直偏移) $(document.body).height();//浏览器当前窗口文档body的高度 $(document.body).outerHeight(true);//浏览