JavaScript での無限スクロール

Shraddha Paghdar 2024年2月16日
JavaScript での無限スクロール

無限スクロールは、ユーザーがページを下にスクロールするときにコンテンツを継続的にロードする Web デザイン手法です。 これにより、ページネーションの必要がなくなります。

Twitter などのソーシャル ネットワーキング サイトでエンドレス スクロールが成功したことで、この手法が普及しましたが、だからと言ってそれを使用する必要があるわけではありません。

継続的なスクロールは、常にストリーミングされるコンテンツにとって有益であり、各コンテンツ ユニットが同じ階層レベルに属し、ユーザーの関心を引く可能性がほぼ同じである比較的フラットな構造を持っています。

今日の投稿では、JavaScript の無限スクロールについて学びます。

JavaScript での無限スクロール

GlobalEventHandlers mixin の onscroll プロパティは、scroll イベントを処理するイベント ハンドラーです。

Scroll イベントは、ドキュメント ビューまたは要素がユーザー、Web API、またはユーザー エージェントによってスクロールされたときに発生します。

構文:

target.onscroll = functionRef

functionRef は、関数名または関数式です。 この関数は、UIEvent オブジェクトを唯一の引数として取ります。

一度にオブジェクトに割り当てられる onscroll ハンドラーは 1つだけです。

複数のハンドラーが必要な場合は、代わりに EventTarget.addEventListener() メソッドを使用して、scroll イベントをリスナーに渡すことができます。 window.onscroll ここ に関する詳細情報を見つけることができます。

例を使って理解しましょう。

<body>
<p>Hello world!</p>
<p>Hello world!</p>
<p>Hello world!</p>
<p>Hello world!</p>
<p>Hello world!</p>
<p>Hello world!</p>
<p>Hello world!</p>
<p>Hello world!</p>
<p>Hello world!</p>
<p>Hello world!</p>
</body>
var body = document.querySelector('body');

body.onscroll = function() {
  if (window.scrollY > (document.body.offsetHeight - window.outerHeight)) {
    console.log('It\'s working!');
    body.style.height = document.body.offsetHeight + 100 + 'px';
  }
}

上記の例では、HTML DOM の本文内に 10 段落のタグを定義しています。 body がレンダリングされ、ユーザーが下にスクロールするたびに、ドキュメントが現在垂直方向にスクロールされているピクセル数を確認します。

bodywindow の高さよりも大きい場合は、body の現在の高さに 100px を追加します。 JavaScript をサポートするブラウザーで上記のコード スニペットを実行します。 以下の結果がコンソールに出力されます。

出力:

"It's working!"
"It's working!"
"It's working!"
"It's working!"
"It's working!"
"It's working!"
....

デモはこちら

Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

関連記事 - JavaScript Scroll