整个浏览器
文档坐标:
不会随浏览器滚动而变化
- css指定元素位置时,文档坐标
视口坐标:
随浏览器滚动而变化
- 查询元素的位置,视口坐标
- 事件处理中的鼠标坐标,视口坐标
pageX和pageY
浏览器窗口滚动条的位置
pageXOffset
pageYOffset
除ie8及以下scrollLeft和scollTop 适用于所有浏览器
e.g.
查询窗口的视口尺寸 clientWidth和clientHeight
单个元素
查询一个元素视口的位置
getBoundingClientRect()
它不需要参数,返回一个包含left、right、top、bottom属性的对象
除IE浏览器外还包含 width和height属性
- 计算元素的文档位置
- 计算元素的width和height
注getBoundingClientRect()返回元素的坐标包含border和padding,但不包含margin
getClientRects()
针对内联元素,可能占有多行,返回一个对象数组
注getBoundingClientRect()和getClientRects()返回的是静态快照,当视口改变时,不会实时更新
滚动浏览器 scrollTo
offsetLeft、offsetTop
相对父元素
e.g. 计算出该元素的文档位置
元素的offset,client,scroll
clientWidth和clientHeight
1.指的是padding和content
2.(pading和comtent)之前有滚动条,不包含滚动条
3.i,span内联元素该值返回0
offsetWidth和offsetHeight
1.指的是 border,padding和content
scrollWidth和srollHeight
1.指的是padding和content,和任何溢出的内容的尺寸
2.若没有溢出的内容的尺寸,和clientWidth和clientHeigh相等
clientLeft和clientTop
1.通常指的是border,若滚动条在左侧,还包含滚动条的宽度
2.内联元素指为0
offLeft和offTop
1.指的是相对于父元素的x,y坐标
scrollLeft和scrollTop
1.查询滚动条的位置
2.或指定滚动条的位置
3.或使用scrollTo
参考指南:
js权威指南 15章