clientWidth、offsetWidth、scrollWidth等有关位置和宽高的属性及函数

842 阅读2分钟


clientHeight/Width


  • 只读属性
  • 内联元素以及没有 CSS 样式的元素的 clientWidth 属性值为 0

Height: content + padding - scrollbarH
Width: content + padding - scrollbarW



offsetHeight/Width



  • 只读属性
  • 不包含:before或:after等伪类元素的高度。
  • 如果元素被隐藏(例如 元素或者元素的祖先之一的元素的style.display被设置为none),则返回0

Height: content + padding + border + scrollbarHeight
Width: content + padding + border + scrollbarWidth




scrollHeight/Width


  • 只读
  • 返回元素的高度,包括不可见的溢出部分
  • 包含伪类的高度(::after,::before等)
  • 没有滚动条时,与clientWidth/Height相等

Height: content + padding + scrollbarH
Width: content + padding + scrollbarW





clientLeft/Top


  • 表示一个元素的左/上边框的宽度
  • 如果元素的文本方向是从右向左,并且由于内容溢出导致左边出现了一个垂直滚动条,则该属性包括滚动条的宽度。
  • clientLeft 不包括左/上外边距和左/上内边距。
  • clientLeft 是只读的。

offsetParent


  • 只读
  • 假如当前元素的父级元素中有CSS定位,offsetParent取最近的那个父级元素。
  • 如果当前元素没有设置过position,会返回最近的td、th、table、body
  • 当该元素的display为none时候,offsetParent 返回 null
  • 如果当前元素的父级元素没有进行CSS定位(position为absolute或relative),offsetParent为body.

offsetLetf/Top


  • offsetLeft返回当前元素左上角相对于 HTMLElement.offsetParent 节点的左边界偏移的像素值。
  • offsetTop返回当前元素左上角相对于 HTMLElement.offsetParent 节点的上边界偏移的像素值。


window.scrollX

返回文档/页面水平方向滚动的像素值。

window.scrollY

返回文档在垂直方向已滚动的像素值。


Element.getBoundingClientRect()

返回值是一个 DOMRect 对象,这个对象是由该元素的 getClientRects() 方法返回的一组矩形的集合, 即:是与该元素相关的CSS 边框集合 。

DOMRect 对象包含了一组用于描述边框的只读属性——left、top、right和bottom,单位为像素。除了 width 和 height 外的属性都是相对于视口的左上角位置而言的。



width、height就是元素的宽高
top、left、right、bottom可以看下图