天天看点

如何区分clientX、clientY、pageX、pageY、offsetX、offsetY……

作者:私货笔记

一、概念

可视区域:元素内容区域 + padding区域,即(width+左右padding,height+上下padding)为可视区域。如下图:

如何区分clientX、clientY、pageX、pageY、offsetX、offsetY……

文档区域:承载文档内容的区域。有滚动条的时候,我们拉动滚动条,文档区域会同时往上滚动,进入一个不可见区域。

如何区分clientX、clientY、pageX、pageY、offsetX、offsetY……
如何区分clientX、clientY、pageX、pageY、offsetX、offsetY……

二、鼠标事件属性

clientX:鼠标到浏览器窗口的X坐标。(浏览器可视区域左上角为坐标原点)

clientY:鼠标到浏览器窗口的Y坐标。(浏览器可视区域左上角为坐标原点)

如何区分clientX、clientY、pageX、pageY、offsetX、offsetY……

pageX:鼠标到浏览器文档的X坐标。(文档左上角为坐标原点)

pageX:鼠标到浏览器文档的Y坐标。(文档左上角为坐标原点)

如何区分clientX、clientY、pageX、pageY、offsetX、offsetY……

offsetX:鼠标相对于触发事件的元素的X坐标。(触发事件元素左上角为坐标原点)

offsetY:鼠标相对于触发事件的元素的Y坐标。(触发事件元素左上角为坐标原点)

如果是红框div触发了鼠标事件,则:

如何区分clientX、clientY、pageX、pageY、offsetX、offsetY……

screenX:鼠标相对于电脑显示器的X坐标。(屏幕左上角为坐标原点)

screenY:鼠标相对于电脑显示器的Y坐标。(屏幕左上角为坐标原点)

如何区分clientX、clientY、pageX、pageY、offsetX、offsetY……

三、元素视图属性

如何区分clientX、clientY、pageX、pageY、offsetX、offsetY……

参照上图理解:

clientWidth: 元素可视区域宽度 = width + 左右padding

clientHeight:元素可视区域高度 = height + 上下padding

offsetWidth:元素宽度 = width + 左右padding + 左右border

offsetHeight:元素高度 = height + 上下padding + 上下border

scrollWidth:元素内容实际宽度 = clientWidth + 水平滚动条可以拉动的最大宽度 = clientWidth + scrollLeft(水平滚动条拉到最右边时)

scrollHeight:元素内容实际高度 = clientHeight + 纵向滚动条可以拉动的最大高度 = clientHeight + scrollTop(纵向滚动条拉到最下边时)

scrollLeft:元素当前水平滚动条距离元素左边的距离。

scrollTop:元素当前纵向滚动条距离元素上边的距离。

offsetParent:距离当前元素最近的一个父级定位元素,(如果没有)直至body元素。

offsetLeft:元素(border开始)到offsetParent的左侧(不包含border)的距离。

offsetTop:元素(border开始)到offsetParent的顶部(不包含border)的距离。

继续阅读