offset/client/scroll你都记清了吗?

offset家族

都是整数值, 如果是小数会四舍五入

  1. Element.offsetHeight返回一个整数,包括**元素本身的高度、padding 和 border **,以及水平滚动条的高度 (如果存在滚动条)。

  2. Element.offsetWidth表示元素本身的宽度, 其他都与Element.offsetHeight一致。

这两个属性都是只读属性,只比Element.clientHeightElement.clientWidth多了边框的高度或宽度。

如果元素的 CSS 设为不可见(比如display: none;),则返回0

  1. Element.offsetParent属性返回最靠近当前元素的、并且 CSS 的position属性不等于static的上层元素。

该属性主要用于确定子元素位置偏移的计算基准,Element.offsetTopElement.offsetLeft就是offsetParent元素计算的。

如果该元素是不可见的(display属性为none),或者位置是固定的(position属性为fixed),则offsetParent属性返回null

  1. Element.offsetLeft返回当前元素左上角相对于最近的开启了定位的节点的水平位移

  2. Element.offsetTop返回垂直位移,单位为像素。通常,这两个值是指相对于父节点的位移。

client家族

都是整数值, 如果是小数会四舍五入

  1. Element.clientHeight表示元素节点本身的高度和 **padding**,只对块级元素生效,对于行内元素返回0

这个高度不包括bordermargin。如果有水平滚动条,还要减去水平滚动条的高度。

  1. Element.clientWidth表示元素节点本身的宽度和 padding, 其余和Element.clientHeight一致

  2. Element.clientLeft表示元素节点左边框的宽度,不包括左侧的paddingmargin。如果没有设置左边框,或者是行内元素(display: inline),该属性返回0

  3. Element.clientTop表示网页元素上边框的宽度,其他特点都与clientLeft相同。

判断滚动条是否滚动到底

  • 垂直滚动条 : scrollHeight -scrollTop = clientHeight
  • 水平滚动条 : scrollWidth - scrollLeft = clientWidth

其它

  • document.documentElementclientHeight属性,返回当前视口的高度(即浏览器窗口的高度),等同于window.innerHeight属性减去水平滚动条的高度(如果有的话)。
  • document.body的高度则是网页的实际高度。一般来说,document.body.clientHeight(网页总高度)大于document.documentElement.clientHeight(视口高度)。

scroll家族

都是整数值, 如果是小数会四舍五入

  1. Element.scrollHeight表示当前元素的总高度,包括溢出容器、当前不可见的部分。它包括padding,但是不包括bordermargin以及水平滚动条的高度(如果有水平滚动条的话),还包括伪元素(::before::after)的高度。

  2. Element.scrollWidth属性表示当前元素的总宽度,其他地方都与scrollHeight属性类似。这两个属性只读。

整张网页的总高度可以从document.documentElementdocument.body上读取。

1
2
3
// 返回网页的总高度
document.documentElement.scrollHeight
document.body.scrollHeight
  1. Element.scrollLeft属性表示当前元素的水平滚动条向右侧滚动的距离。

  2. Element.scrollTop属性表示当前元素的垂直滚动条向下滚动的距离。对于那些没有滚动条的网页元素,这两个属性总是等于0

如果要查看整张网页的水平的和垂直的滚动距离,要从document.documentElement元素上读取。

1
2
document.documentElement.scrollLeft
document.documentElement.scrollTop

这两个属性都可读写设置该属性的值(不需要单位),会导致浏览器将当前元素自动滚动到相应的位置。

总结

image-20231027210801789


offset/client/scroll你都记清了吗?
http://example.com/2023/10/27/scroll offset client/
作者
weirdo
发布于
2023年10月27日
更新于
2023年11月14日
许可协议