JavaScriptのスクロール関連のプロパティとメソッドまとめ

こんにちは、ナカムラです。
前回の記事で、少しだけスクロールの操作を行いました。
今回は、スクロールに関するプロパティとメソッドについて、より詳しく整理していきたいと思います。

tech.arms-soft.co.jp

DEMO

プロパティやメソッドを実際に動作させたものになります。
メソッドの処理を組み込んだボタンはページの一番下にありますので、クリックしてみてください。

See the Pen JavaScriptのスクロール関連のプロパティとメソッドまとめ by Nakamura (@takayo-nakamura) on CodePen.

プロパティ

プロパティはオブジェクト(要素)が持っている情報です。

現在のスクロール量を取得したい時に使うプロパティ(読み取り専用)

スクロールした時に何px移動したかの数値を取得できます。
IE非対応のプロパティもあるので注意してください。

IE非対応

  • scrollX
  • scrollY

IE9以上に対応

  • pageXOffset
  • pageYOffset

windowオブジェクトのプロパティなので、windowにドット(.)で繋ぐ書き方になります。

window.pageYOffset

画面上に表示されない部分を含めた、要素内の寸法(読み取り専用)

インラインスクロールが発生した時に使用します。

  • scrollWidth
  • scrollHeight

要素内のスクロール位置

要素内のスクロール位置を制御したい場合は、こちらのプロパティの値を変更することで、スクロール位置を変えることができます。

  • scrollTop
  • scrollRight
  • scrollBottom
  • scrollLeft

メソッド

メソッドは関数のようなものです。
スクロール位置を変えるときに使います。
※アンカーリンクで移動できるものにJavaScriptを書くのは無駄なので、アンカーリンクで対応します。

  • scroll():絶対値。指定した要素の左上を(0,0)とし、そこからの距離を指定します。
  • scrollTo():絶対値。(scrollと同じ)
  • scrollBy():相対値。現在の位置から指定した数値の分だけ移動します。
  • scrollIntoView():特定の要素の位置へスクロールする※IE非対応、Safariはoptionが非対応

scrollIntoView()はIEとSafariが非対応なので、実務では要素の位置を取得して、scrollTo()を使用する方法を使うことになります。

まとめ

スクロールの調整はwindowに対するものと、要素内に対するもので少し違うので、混乱しないように整理しておきたいですね。