在获取窗口或元素的大小和位置信息的时候,经常会被这些属性弄懵,于是整理了一下这些方法或属性,方便查看
窗口的位置和大小
位置
screenLeft
和screenX
:用于表示窗口相对于屏幕左边的位置,大部分浏览器都支持前者,火狐只支持后者screenTop
和screenY
: 用于表示窗口相对于屏幕上边的位置,大部分浏览器都支持前者,火狐只支持后者兼容
12const leftPos = (typeof window.screenLeft === 'number') ? window.screenLeft : window.screenXconst topPos = (typeof window.screenTop === 'number') ? window.screenTop : window.screenY
大小
innerWidth
窗口宽度innerHeight
窗口高度
这两个属性主流浏览器都支持,IE9+也支持,IE8需要通过DOM来获取,即document.documentElement.clientWidth
和document.documentElement.clientHeight
元素的大小
偏移量
offsetHeight
元素在垂直方向上占用的空间大小,以像素计。包括元素的高度、(可见的)水平滚动条的高度、上边框和下边框高度offsetWidth
元素在水平方向上占用的空间大小,以像素计。包括元素的宽度、(可见的)垂直滚动条宽度、左边框和右边框的宽度offsetLeft
元素的左边框至包含元素的左内边框之间的像素距离offsetTop
元素的上边框至包含元素的上内边框之间的像素距离
其中offsetLeft
和offsetTop
属性与包含元素有关,包含元素的引用保存在offsetParent
属性中。offsetParent
不一定和parentNode
的值相等
比如<td>
元素的offetParent
是作为祖先元素的<table>
元素,因为<table>
是在DOM层次中距<td>
最近的一个具有大小的元素
要想准确知道元素在页面的偏移量,需要将这个元素的offsetLeft和offsetTop与其offsetParent的相同属性相加,如此循环直至根元素
|
|
客户区大小
客户区大小指的是元素内容及内边距所占据的空间大小
clientWidth
元素内容区宽度加上左右内边距宽度clientHeight
元素内容区高度加上上下内边距高度
滚动大小
scrollHeight
在没有滚动条的情况下,元素内容的总高度scrollWidth
在没有滚动条的情况下,元素内容的总宽度scrollLeft
被隐藏在内容区域左侧的像素数。通过设置这个属性可以改变元素的滚动位置scrollTop
被隐藏在内容区域上方的像素数。通过设置这个属性可以改变元素的滚动位置scrollHeight
和scrollWidth
主要同于确定元素内容的实际大小。因此带有垂直滚动条的页面总高度就是document.documentElement.scrollHeight
确定元素大小
主要就是调用getBoundingClientRect()
方法,这个方法返回一个矩形对象,包含六个属性,除了left、top、right和bottom,还包含自身的width和height
事件event对象相关坐标位置
客户区坐标位置
clientX
表示事件发生事鼠标指针在视口中的水平坐标clientY
表示事件发生事鼠标指针在视口中的垂直坐标
页面坐标位置
pageX
表示鼠标光标在页面中的水平位置pageY
表示鼠标光标在页面中的垂直位置
在没有滚动条的时候,pageX和pageY的值与clientX和clientY的值相同,IE8及之前的版本不支持这两个属性
屏幕坐标位置
screenX
表示事件发生时鼠标指针在整个屏幕的水平位置screenY
表示事件发生时鼠标指针在整个屏幕的垂直位置