Element和Event中的各种offsetTop,clientTop,scrollTop等位置
一、HTMLElement.offsetParent
1、HTMLElement.offsetParent
HTMLElement.offsetParent
是一个只读属性,返回一个指向最近的(指包含层级上的最近)包含该元素的定位元素或者最近的 table,
td,
th,
body
元素。当元素的 style.display
设置为 "none" 时,offsetParent
返回 null
。offsetParent
很有用,因为 offsetTop
和 offsetLeft
都是相对于其内边距边界的。
即:当前元素最近的定位父元素
在 Webkit 中,如果元素为隐藏的(该元素或其祖先元素的 style.display
为 "none"),或者该元素的 style.position
被设为 "fixed",则该属性返回 null
。
在 IE 9 中,如果该元素的 style.position
被设置为 "fixed",则该属性返回 null
。(display:none
无影响。)
2、HTMLElement.offsetWidth
HTMLElement.offsetWidth
是一个只读属性,返回一个元素的布局宽度。一个典型的(译者注:各浏览器的offsetWidth可能有所不同)offsetWidth是测量包含元素的边框(border)、水平线上的内边距(padding)、竖直方向滚动条(scrollbar)(如果存在的话)、以及CSS设置的宽度(width)的值。
3、 HTMLElement.offsetHeight
HTMLElement.offsetHeight
是一个只读属性,它返回该元素的像素高度,高度包含该元素的垂直内边距和边框,且是一个整数。
包括元素的边框、内边距和元素的水平滚动条(如果存在且渲染的话),不包含:before或:after等伪类元素的高度。
4、HTMLElement.offsetTop
HTMLElement.offsetTop
为只读属性,它返回当前元素相对于其 offsetParent
元素的顶部内边距的距离。
5、HTMLElement.offsetLeft
HTMLElement.offsetLeft
是一个只读属性,返回当前元素左上角相对于 HTMLElement.offsetParent
节点的左边界偏移的像素值。
二、Element.clientWidth
1、Element.clientWidth
内联元素以及没有 CSS 样式的元素的 clientWidth
属性值为 0。Element.clientWidth
属性表示元素的内部宽度,以像素计。该属性包括内边距 padding,但不包括边框 border、外边距 margin 和垂直滚动条(如果有的话)。
2、Element.clientHeight
clientHeight这个属性是只读属性,对于没有定义CSS或者内联布局盒子的元素为0,否则,它是元素内部的高度(单位像素),包含内边距,但不包括水平滚动条、边框和外边距。
3、Element.clientLeft
clientLeft表示一个元素的左边框的宽度,以像素表示。如果元素的文本方向是从右向左(RTL, right-to-left),并且由于内容溢出导致左边出现了一个垂直滚动条,则该属性包括滚动条的宽度。clientLeft
不包括左外边距和左内边距。clientLeft
是只读的。
4、Element.clientTop
clientTop一个元素顶部边框的宽度(以像素表示)。不包括顶部外边距或内边距。clientTop
是只读的
三、Element.scrollWidth
1、Element.scrollWidth
Element.scrollWidth
这个只读属性是元素内容宽度的一种度量,包括由于overflow溢出而在屏幕上不可见的内容。 scrollWidth
值等于元素在不使用水平滚动条的情况下适合视口中的所有内容所需的最小宽度。 宽度的测量方式与clientWidth
相同:它包含元素的内边距,但不包括边框,外边距或垂直滚动条(如果存在)。 它还可以包括伪元素的宽度,例如::before
或::after
。 如果元素的内容可以适合而不需要水平滚动条,则其scrollWidth
等于clientWidth
2、Element.scrollHeight
Element.scrollHeight
这个只读属性是一个元素内容高度的度量,包括由于溢出导致的视图中不可见内容。
scrollHeight
的值等于该元素在不使用滚动条的情况下为了适应视口中所用内容所需的最小高度。 没有垂直滚动条的情况下,scrollHeight值与元素视图填充所有内容所需要的最小值clientHeight
相同。包括元素的padding,但不包括元素的border和margin。scrollHeight也包括 ::before
和 ::after
这样的伪元素。
3、Element.scrollTop
Element.scrollTop
属性可以获取或设置一个元素的内容垂直滚动的像素数。
一个元素的 scrollTop
值是这个元素的内容顶部(卷起来的)到它的视口可见内容(的顶部)的距离的度量。当一个元素的内容没有产生垂直方向的滚动条,那么它的 scrollTop
值为0
。
4、Element.scrollLeft
Element.scrollLeft
属性可以读取或设置元素滚动条到元素左边的距离。
注意如果这个元素的内容排列方向(direction
) 是rtl
(right-to-left) ,那么滚动条会位于最右侧(内容开始处),并且scrollLeft
值为0。此时,当你从右到左拖动滚动条时,scrollLeft会从0变为负数。
四、MouseEvent.clientX
1、MouseEvent.clientX
MouseEvent.clientX
是只读属性, 它提供事件发生时的应用客户端区域的水平坐标 (与页面坐标不同)。
例如,不论页面是否有水平滚动,当你点击客户端区域的左上角时,鼠标事件的 clientX
值都将为 0 。
2、MouseEvent.clientY
MouseEvent.clientY
是只读属性, 它提供事件发生时的应用客户端区域的垂直坐标 (与页面坐标不同)。例如,当你点击客户端区域的左上角时,鼠标事件的 clientY
值为 0 ,这一值与页面是否有垂直滚动无关。
3、MouseEvent.pageX
pageX
是一个由MouseEvent
接口返回的相对于整个文档的x(水平)坐标以像素为单位的只读属性。
这个属性将基于文档的边缘,考虑任何页面的水平方向上的滚动。举个例子,如果页面向右滚动 200px 并出现了滚动条,这部分在窗口之外,然后鼠标点击距离窗口左边 100px 的位置,pageX 所返回的值将是 300。
4、MouseEvent.pageY
pageY
是一个只读属性,它返回触发事件的位置相对于整个 document 的 Y 坐标值。由于其参考物是整个 dom,所以这个值受页面垂直方向的滚动影响。例如:当你垂直方向向下滚动了 50 pixel,那么你在顶端进行点击的时候,获取的pageY
为 50pixed 而不是 0。
5、MouseEvent.screenX
screenX
是 MouseEvent
的只读属性,提供鼠标在全局(屏幕)中的水平坐标(偏移量)。
6、MouseEvent.screenY
screenX
是 MouseEvent
的只读属性,提供鼠标在全局(屏幕)中的水平坐标(偏移量)。
摘自MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/Element