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

文档坐标和视口坐标

概念

元素的位置是以像素来度量的,向右代表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             }

 

时间: 2024-10-11 01:07:31

(第八天)文档坐标、视口坐标和元素坐标的相关文章

产品需求文档(PRD)的一些基础元素

文章描述:写好PRD文档的八个要素. 1.1 Purpose (产品愿景) 必须对产品要解决的问题有深刻的了解,阐明即将开发的产品如何满足该需求. 产品经理应该非常清晰.准确地定义产品是什么,解决什么,意在成为什么,并与产品相关的各个角色(老板.设计师.开发.用户)交流此愿景. 1.2 Objective (产品目标) 将前述定义的产品愿景,分解为具体要实现的体验目标,并厘清每个细分目标的验收标准,如: 1.2.1 流畅无刷新的体验 1.2.2 设计简单.易用.有趣 1.2.3 高度关注用户隐私

CSS文档流与块级元素(block)内联元素(inline)

将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流. 每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端. 若当前行容不下, 则另起新行再浮动. 内联元素也不会独占一行. 几乎所有元素(包括块级,内联和列表元素)均可生成子行, 用于摆放子元素. 有三种情况将使得元素脱离文档流而存在,分别是浮动,绝对定位, 固定定位.   基于文档流, 我们可以很容易理解以下的定位模式: 相对定位, 即相对于元素在文档流中位置进行偏移. 但保留原占位. 绝对定位, 即完全脱离文档

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

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

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

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

用PHP编写PDF文档生成器

PHP一个最大的优点就是它对新技术的支持非常容易,这种语言的可扩展性使得开发人员能够很方便地添加新的模块,而且遍布世界的技术团体的支持和众多扩展模块的支持使得PHP已经成为功能最齐全的Web编程语言之 一.目前可得到的扩展模块已经能够使开发人员执行IMAP和POP3操作,可以动态产生图象和Shockwave Flash动画,进行信用卡验证,敏感数据的加密解密,还能够解析XML格式的数据.但这还不是全部,现在,又有一个新的模块可以与PHP进行绑定了,那就是PDFLib扩展模块,它能够让开发人员动态

用PHP编写PDF文档生成器_php基础

PHP一个最大的优点就是它对新技术的支持非常容易,这种语言的可扩展性使得开发人员能够很方便地添加新的模块,而且遍布世界的技术团体的支持和众多扩展模块的支持使得PHP已经成为功能最齐全的Web编程语言之  一.目前可得到的扩展模块已经能够使开发人员执行IMAP和POP3操作,可以动态产生图象和Shockwave Flash动画,进行信用卡验证,敏感数据的加密解密,还能够解析XML格式的数据.但这还不是全部,现在,又有一个新的模块可以与PHP进行绑定了,那就是PDFLib扩展模块,它能够让开发人员动

理解document.all[]:DOM文档对象模型

文章简介:浅谈document.all与WEB标准. 1.DOM WEB标准现在可真是热门中热门,不过下面讨论的是一个不符合标准的document.all[].DOM--DOCUMENT OBJECT MODEL文档对象模型,提供了访问文档对象的方法.例如文档中有一个table,你要改变它的背景颜色,那就可以在javascript中用document.all[]访问这个TABLE.但DOM也有所不同,因为浏览器厂商之间的竞争,各浏览器厂商都开发了自己的私有DOM,只能在自己的浏览器上正确运行,d

VC++中利用MSXML解析XML文档

c++|xml 四.程序实现 下面通过一个具体的实例来说明在VC++中如何利用MSXML解析XML文档. (1)源XML文档(xmlfile.xml)如下: <?xml version="1.0" encoding="GB2312"?> <Device id="10041" name="设备1"> <Type>13</Type> <TypeName>保护</Ty

第8章 文档类型定义和合法性(2)

XML教程<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  8.5.3 子元素列表 由于SEASON元素被声明为可以接受任何元素作为子元素,因而可以接受各种各样的元素.当遇到那些多多少少有些非结构化的文本,如杂志文章时,这种情况就很有用.这时段落.副栏.项目列表.序号列表.图形.照片以及子标题可出现在文档的任意位置.然而,有时可能想对数据的安排上多实行些规则和控制.例如