JS clientX\offsetLeft\scrollHeight等相关解读

原生JS里面有很多看起来很相似的概念,不搞明白的话,容易用错,最好自己动手写写demo,画画图,更容易弄明白。本文主要记录clientX、offsetTop、clientHeight、scrollHeight等这一系列相关的几个概念,主要参考了网上一些概念加自己理解。

初识

相信大家对下面一张图,并不陌生,一搜索offsetTop相关就有,如果都能搞明白的就不需要往下看了。

注:图片转自参考文章《浅析offsetLeft,Left,clientLeft之间的区别

深入

下面具体分情况表示各值,主要涉及的就是上图里面的概念。
其实主要是对上面漂亮的图的手抄版,字很丑,但经过自己动手,就很清楚明了。

简单版

正常文档流下,各值分开示意图:

脱离文档流情况下,最主要区别是offsetTop和offsetLeft,主要依靠父元素定位,offsetTop是子元素距离父元素的高度,如下图:


clientX/clientY是相对于浏览器可视窗口来计算。
pageX/pageY,offsetTop/offsetLeft是相对于页面(文档)来计算。

升级版

正常文档流下,综合示意图:

在线demo

正常文档流demo
脱离文档流demo

参考

浅析offsetLeft,Left,clientLeft之间的区别