JavaScript でスクロールバーの位置を取得する

Tahseen Tauseef 2023年10月12日
  1. スクロールバーとスクロールバーの位置とは
  2. JavaScript の window オブジェクトを使用してスクロールバーの位置を取得する
  3. JavaScript で要素内のスクロールバーの位置を取得する
JavaScript でスクロールバーの位置を取得する

このチュートリアルでは、JavaScript でスクロールバーの位置を取得する方法について説明し、次のことについて説明します。

  • スクロールバーとスクロールバーの位置とは何ですか
  • window オブジェクトを使用してスクロールバーの位置を取得する方法
  • 要素内のスクロールバーの位置を取得する方法

スクロールバーとスクロールバーの位置とは

スクロールバーは通常、ユーザーがスクロールできるブラウザーウィンドウの最下部または右端にあり、ユーザーの表示領域を返します。多くのユーザーは、より多くのコンテンツを表示するためにほぼすべての Web ページを上下にスクロールする必要があるため、毎日スクロールバーを使用します。

スクロールバーは、ウィンドウの表示領域の水平または垂直の位置であり、ユーザーが左または上からどれだけスクロールしたかを意味します。デフォルトでは、スクロール位置は左から 0px、上から 0px です。

JavaScript の window オブジェクトを使用してスクロールバーの位置を取得する

window オブジェクトを使用して、ウィンドウ上のスクロールバーの位置を取得できます。window オブジェクトは他の JavaScript オブジェクトと同様であるため、scroll イベントをリッスンする EventListener を追加できます。

window.addEventListener('scroll', (event) => {
  let scrollY = this.scrollY;
  let scrollX = this.scrollX;
  console.log(scrollY);
  console.log(scrollX);
});

このコンテキストでの thiswindow オブジェクトと呼ばれます。scrollY は、ウィンドウ表示領域が上からスクロールされたピクセル数を示す window のプロパティです。scrollX は、ユーザーが左からどれだけスクロールしたかを示す window オブジェクトのプロパティです。

JavaScript で要素内のスクロールバーの位置を取得する

ウィンドウ全体ではなく、要素を基準にしてスクロール位置を取得する必要がある特定のシナリオがあります。これを行う例を見てみましょう。

<!DOCTYPE html>
<html>
    <head>
        <style>
            #ContentContainer {
              height: 250px;
              width: 250px;
              overflow: auto;
            }

            #content {
              height: 500px;
              width: 1000px;
              background-color: red;
            }
        </style>
    </head>
    <body>

        <div id="ContentContainer" onscroll="getScrollPoistion()">
          <div id="content">Content to Scroll</div>
        </div>

        <script>
            function getScrollPoistion() {
              var ContainerElement = document.getElementById("ContentContainer");
              var x = ContainerElement.scrollLeft;
              var y = ContainerElement.scrollTop;
			  console.log(x); // scroll position from Left
              console.log(y); // scroll position from top
            }
        </script>

    </body>
</html>

上記のコードセグメントでは、ContentContainerid を持つ要素は onscroll のプロパティを持っています。ユーザーが要素内をスクロールするたびに、getScrollPosition 関数が実行されます。

getScrollPosition が行うことは、コンテンツ要素のコンテナを取得し、左からスクロールされた位置を取得してから、上からスクロールされた位置を取得することです。

関連記事 - JavaScript DOM