javascript スクロール時に指定した要素を通過した際に処理を実行する

javascript スクロール時に指定した要素を通過した際に処理を実行する

javascriptで、スクロール時に指定した要素を通過した際に処理を実行するサンプルコードを記述してます。現在のブラウザの高さと要素の画面からの高さをと比較することで可能です。

環境

  • OS windows11 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 110.0.5481.104

指定した要素を通過した際に処理を実行

スクロール時に指定した要素を通過した際に処理を実行するには、
1. 対象の要素の画面上部からの位置を「getBoundingClientRect」で取得
2. 「window.innerHeight」でスクロール時に現在のブラウザの高さを取得
3. 2つを比較して差が0になった際に処理を実行
することで可能です。

<style>
  .box {
    width: 500px;
    height: 500px;
    margin: 50px;
    background-color: aqua;
  }
</style>

<div id="one" class="box">one</div>
<div id="two" class="box">two</div>
<div id="three" class="box">three</div>

<script>

let flg = false;

window.addEventListener('scroll', function() {

  // 画面上部からの要素の相対位置を取得
  pos = document.getElementById('two').getBoundingClientRect().top;
  console.log(`現状の上部からの高さ${pos}`);

  // 現在のブラウザの高さ
  console.log(`現在のブラウザの高さ${window.innerHeight}`);

  if (pos <= window.innerHeight && flg !== true) {
    flg = true;
    console.log('通過');
  }

});

</script>

実行結果を見ると取得できていることが確認できます。