9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JSのscrollHeight, clientHeight, offsetHeightの違い

Last updated at Posted at 2022-03-27

駆け出しプログラマーの備忘録です。

JSでページの高さを調べるためには様々種類の要素を使用できるかと思いますが、それぞれどのような違いがあるのか、忘れないようにメモしておきます。

例えば、SNSでは特に使用されている、Infinity Scroll(スクロールするたびに新しいコンテンツが読み込まれるもの)などを作るときに使用しますね。

scrollHeight

scrollHeightは、要素のコンテンツの高さ(overflowによってスクリーン上では見れなくなっているコンテンツを含む)

また、要素のpaddingは含みますが、border, margin, 縦方向のスクロールバーは含みません。
高さの疑似要素(::before, ::afterなど)は含みます。

要素のコンテンツが縦のスクロールバーなしに、 収まっている場合、scrollHeightはclientHeightと同じになります。

clientHeight

clientHeightは要素のCSSやインラインのレイアウトがない場合は、0として返されます。 それ以外の場合は、ボックスの中の高さがピクセル単位で返されます。 要するに、paddingは含まれますが、border, margin, 縦のスクロールバーは含まれません。

offsetHeight

offsetHeightは要素の高さ(縦のpaddingとborderを含む)を整数として返します。 基本的には要素のCSSの高さによってピクセル単位で計られます。

高さは、border, padding, 縦のスクロールバーが含まれますが、疑似要素(::before, ::afterなど)の高さは含まれません。

もし、要素がhiddenとして隠されていた場合は、高さは0として返されます。

参照:
https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight
https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight

9
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?