JavaScript で自動スクロールを実装する

Anika Tabassum Era 2023年10月12日
JavaScript で自動スクロールを実装する

JavaScript は、より優れた UI エクスペリエンスを保証し、さまざまなメソッドを備えています。ページを自動的にスクロールするように設定するという問題では、組み合わせてクールな UI を作成できるいくつかの機能を確認します。

ここでの基本的なタスクは、ページが読み込まれるたびに Web ページを自動的にスクロールすることです。また、スクロール中にEnterを押すと、ページが停止します。

そして、もう一度Enterを押すと、ページがスクロールを開始します。コードフェンスにジャンプして、コードフローを理解してみましょう。

JavaScript で自動スクロールするには、scrollBy()setInterval() を使用する

デモンストレーションでは、ビューポートよりも大きな UI を使用します。メインタスクは JavaScript で実装されています。

2つの関数(startScrollstopScroll)を初期化しました。startScroll() 関数は、Enterが押されるたびにスクロールを有効にします。

また、Enterの押下が検出されると、stopScroll() が有効になります。

startScroll 関数には、setInterval() および scrollBy() メソッドがあります。両方のメソッドをマージします。

メソッド scrollBy() によって、期待するスクロールの種類を設定します。このコードでは、水平スクロールを 0 に設定し、垂直スクロールを 2 単位に設定します。

これは静的に下にスクロールする方法であり、スクロールが発生していることを確認することはできません。ページがジャンプして、スクロールした部分の後に表示されます。

したがって、時間間隔を 10 ミリ秒に設定します。したがって、ページは視覚的にダウンします。stopScroll() 関数では、現在のページ位置のインスタンスをチェックすることにより、間隔をクリアします。

また、Enterで再生が一時停止するように条件付きステートメントを作成します。コードを確認してみましょう。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div id="one" style="height: 250px; background:pink">
    <br>
    &nbsp On page load the scrolling of the page will be enabled. <br>
    &nbsp When pressed enter, the scroll will be halt. <br>
    &nbsp And when pressed again it will scroll. <br>
    &nbsp When the scroll meets the end of page, the scrolling function will stop. <br>
    &nbsp And you can manually scroll up. An when needed press enter again to scroll to down. <br>
  </div>
  <div id="one" style="height: 250px; background:purple"></div>
  <div id="one" style="height: 250px; background:cyan"></div>
  <div id="one" style="height: 250px; background:lightgreen"></div>
</body>
</html>
let scrollerID;
let paused = true;
let interval = 10;

function startScroll() {
  let id = setInterval(function() {
    window.scrollBy(0, 2);
    if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
      // end of page?
      stopScroll();
    }
  }, interval);
  return id;
}

function stopScroll() {
  clearInterval(scrollerID);
}
document.body.addEventListener('keypress', function(event) {
  if (event.which == 13 || event.keyCode == 13) {
    // 'Enter' key
    if (paused == true) {
      scrollerID = startScroll();
      paused = false;
    } else {
      stopScroll();
      paused = true;
    }
  }
}, true);

出力:

自動スクロールするには、setInterval()とともに scrollBy()を使用します

ご覧のとおり、ページの最後に到達すると、ページのスクロールが停止します。また、手動でもう一度上にスクロールすると、スクローラーをもう一度再生できるので安心です。

したがって、自動スクロール動作を実装できます。

Anika Tabassum Era avatar Anika Tabassum Era avatar

Era is an observer who loves cracking the ambiguos barriers. An AI enthusiast to help others with the drive and develop a stronger community.

LinkedIn Facebook

関連記事 - JavaScript Scroll