元素位置
scroll
scrollWidth 和 scrollHeight、scrollTop 和 scrollLeft
scrollWidth
的实际宽度:获取指定标签内容层的真实宽度(可视区域宽度+被隐藏区域宽度)
js
scrollWidth = dom?.scrollWidth
1
scrollHeight
的实际高度:获取指定标签内容层的真实高度(可视区域高度+被隐藏区域高度)
js
scrollHeight = dom?.scrollHeight
1
scrollTop
:内容层顶部 到 可视区域顶部的距离。(被隐藏区域高度)
js
scrollTop = dom?.scrollTop
1
scrollLeft
:内容层左端 到 可视区域左端的距离。(被隐藏区域宽度)
js
scrollLeft = dom?.scrollLeft
1
client
clientWidth 和 clientHeight、clientTop 和 clientLeft
clientWidth
的实际宽度:width
+ 左右padding
。 (可视区域宽度)
js
clientWidth = dom?.clientWidth
1
clientHeight
的实际高度:height
+ 上下padding
。 (可视区域高度)
js
clientHeight = dom?.clientHeight
1
clientTop
:border.top
(上边框的宽度)
js
clientTop = dom?.clientTop
1
clientLeft
:border.left
(左边框的宽度)
js
clientLeft = dom?.clientLeft
1
offset
offsetWidth 和 offsetHeight、offsetTop 和 offsetLeft
offsetWidth
的实际宽度:width
+ 左右padding
+ 左右border
js
offsetWidth = dom?.offsetWidth
1
offsetHeight
的实际高度:height
+ 上下padding
+ 上下border
js
offsetHeight = dom?.offsetHeight
1
offsetTop
:当前元素 上边框外边缘 到最近的已定位父级(offsetParent) 上边框内边缘 的距离。如果父级都没有定位,则是到 body顶部 的距离
js
offsetTop = dom?.offsetTop
1
offsetLeft
:当前元素 左边框外边缘 到最近的已定位父级(offsetParent)左边框内边缘 的距离。如果父级都没有定位,则是到 body左边 的距离
js
offsetLeft = dom?.offsetLeft
1
event
screen
screenX
:返回当某个事件被触发时,鼠标指针相对于显示器的水平坐标。screenY
:返回当某个事件被触发时,鼠标指针相对于显示器的垂直坐标。
js
evt?.screenX
evt?.screenY
1
2
2
page
pageX
:鼠标到文档左边的距离,包括滚动隐藏区域pageY
:鼠标到文档顶部的距离,包括滚动隐藏区域
js
evt?.pageX
evt?.pageY
1
2
2
offset
offsetX
:鼠标到事件源左边框内侧的距离offsetY
:鼠标到事件源上边框内侧的距离
js
evt?.offsetX
evt?.offsetY
1
2
2
client
clientX
:鼠标到文档左边的距离,不包括滚动隐藏区域clientY
:鼠标到文档顶部的距离,不包括滚动隐藏区域
js
evt?.clientX
evt?.clientY
1
2
2
应用
- 计算元素距离浏览器左上角的距离
js
const getOffsetLeft = (dom) => {
let tmp = dom.offsetLeft
let val = dom.offsetParent
while (val != null) {
tmp += val.offsetLeft
val = val.offsetParent
}
return tmp
}
const getOffsetTop = (dom) => {
let tmp = dom.offsetTop
let val = dom.offsetParent
while (val != null) {
tmp += val.offsetTop
val = val.offsetParent
}
return tmp
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19