HTMLツール

無料 scrollendイベントスニペットジェネレーター

慣性/モメンタムを含むスクロール完了後に発火するscrollendイベントハンドラーをデバウンス比較付きで生成します。

ツールを読み込み中...

scrollendイベントスニペットジェネレーターとは

scrollendイベントは、スクロールが完全に完了したときに発火するブラウザネイティブイベントです。これには慣性スクロール、ラバーバンディング、慣性減衰が含まれます。スクロール中に連続して発火するscrollイベントや、任意のタイムアウトに基づいてスクロールが停止したことを推測するデバウンスされたスクロールハンドラとは異なり、scrollendはユーザーのスクロールジェスチャーが実際に終了したときに正確に1回発火します。このイベントは、プログラムによるスクロール(scrollTo、scrollBy、scrollIntoView)と、タッチ、マウスホイール、キーボード、トラックパッドによるユーザー開始スクロールの両方で発火します。Baseline 2025、Chrome 114+、Edge 114+、Safari 17.5+、Firefox 131+でサポートされています。

クイックアンサー

scrollendイベントは、慣性、慣性減衰、ラバーバンディングを含むスクロールが完全に完了したときに発火します。任意のタイムアウトでスクロール終了を推測するデバウンスされたスクロールハンドラとは異なり、scrollendは真の最終スクロール位置で正確に1回発火するブラウザネイティブシグナルです。Baseline 2025(Chrome 114+、Safari 17.5+、Firefox 131+)。正確な無限スクロールトリガー、スクロール位置ベースのUI更新、アナリティクスインプレッションに使用します。

Last updated: 2026-06-02

制限事項

  • scrollendは実際のスクロール可能なオーバーフローを持つ要素でのみ発火します。overflow:scrollがあるが寸法を超えるコンテンツがない要素は、scrollendを発火しません。イベントに依存する前に、要素にスクロール可能なコンテンツがあることを常に確認してください。
  • scrollendは継続的なスクロール中には発火しません。完了のみを通知します。スクロールジェスチャ中のリアルタイムスクロール追跡には、スムーズな更新のためにrequestAnimationFrameと組み合わせたscrollイベントが依然として必要です。
  • scrollendは中断されたプログラムによるスクロールでは発火しない可能性があります。scrollToまたはscrollByの呼び出しが完了前に別のスクロール呼び出しによって中断された場合、保留中のscrollendはキャンセルされる可能性があります。常に実行されることを前提とするのではなく、scrollendハンドラコールバック内で依存アクションをチェーンしてください。

Sources:MDN Web Docs · W3C Specifications · jquery.app on GitHub

使い方

  1. スニペットタイプを選択します。要素またはウィンドウターゲットを使用した基本のscrollendリスナー、スクロール位置ログ付きのscrollend、またはscrollendとデバウンスされたスクロールの比較。
  2. スクロールターゲットを設定します。window(ドキュメントレベルのスクロール)またはoverflow:auto/overflow:scrollを持つ特定の要素。
  3. ハンドラアクションをカスタマイズします。最終スクロール位置のログ、UI要素の更新、下部でのコンテンツの追加読み込み、スクロール停止時のアニメーションのトリガー。
  4. 生成されたJavaScriptスニペットをコピーしてプロジェクトに貼り付けます。比較スニペットは両方のアプローチをタイミングラベルとともに表示するため、ライブデモで違いを確認できます。

主な用途

  • 慣性スクロール中の複数回の読み込みを避け、ユーザーが実際にスクロールを停止したときのみ無限スクロールコンテンツの読み込みをトリガーします。
  • 中間位置ではなく正確な最終スクロール位置で、スティッキー目次やスクロール進行インジケーターを更新します。
  • ユーザーがセクションへのスクロールを終えたときにアナリティクスイベントやインプレッション追跡を発火させ、正確な測定を保証し二重カウントを防止します。

用途

使用例

正確なロードトリガーを使用した無限スクロール

ソーシャルメディアフィードはscrollendを使用して、ユーザーがページの下部に到達してスクロールを停止したことを検出します。遅い慣性スクロール中に複数回ロードを発火する可能性があるデバウンスされたスクロールハンドラとは異なり、scrollendはスクロール位置が落ち着いたときに1回発火し、単一のコンテンツロードをトリガーします。これにより、重複するAPI呼び出しやゴースト読み込み状態を防ぎます。

スクロール認識ナビゲーションのデバウンス比較

ドキュメントサイトはスクロール位置に基づいてサイドバーで現在のセクションを強調表示します。scrollendを使用すると、強調表示はスクロールが停止したときに正確に更新されます。ユーザーは正しいセクションが即座に強調表示されるのを確認できます。高速トラックパッドで200msデバウンスのスクロールハンドラを使用すると、強調表示はスクロール中にちらつき、セクション間をジャンプしてから落ち着くことがよくあります。生成された比較スニペットは両方の動作を並べて示します。

よくあるミス

  • scrollendが自動的にすべてのスクロール可能要素で発火すると思い込む。scrollendは実際のスクロール可能なオーバーフロー(scrollWidthがclientWidthより大きい、またはscrollHeightがclientHeightより大きい)を持つ要素でのみ発火します。overflow:scrollがあるがオーバーフローコンテンツがない要素はscrollendを発火しません。
  • 継続的なスクロールフィードバックが必要な場合にscrollendを使用する。scrollendはスクロールが停止したときにのみ発火します。プログレスバー、パララックス効果、または中間スクロール位置を追跡する必要があるその他の視覚的更新には、requestAnimationFrameを伴う通常のscrollイベントを使用してください。
  • すべてのスクロール完了ユースケースでscrollendに依存する。scrollByやscrollIntoViewによるプログラムによるスクロールは、別のスクロール呼び出しによって中断された場合、scrollendをトリガーしない可能性があります。常に発火することを前提とするのではなく、scrollendハンドラ内でアクションをチェーンしてください。

検証

  1. 十分なコンテンツがあるスクロール可能なdivを作成します。最終的なscrollTop値をログするscrollendリスナーをアタッチします。コンテンツをスクロールして放します。scrollendがスクロールジェスチャ中や慣性フェーズ中ではなく、最終的な静止位置で正確に1回発火することを確認します。
  2. 同じスクロール可能コンテナ内でscrollendをデバウンスされたスクロールハンドラ(200msタイムアウト)と比較します。急速にスクロールし、scrollendがスクロールの真の終了時に発火する一方、デバウンスされたハンドラはスクロール速度によっては複数回またはわずかに不正確な位置で発火する可能性があることを観察します。

FAQ

scrollendイベントスニペットジェネレーターのFAQ

scrollendはデバウンスされたスクロールイベントリスナーとどう違いますか?

デバウンスされたスクロールリスナーは、最後のスクロールイベントから設定可能なタイムアウト(通常100〜300ms)後に発火します。スクロールが停止したことを推測します。scrollendは、ブラウザがスクロールが停止したことを認識したときに発火します。これは、慣性の減衰、ラバーバンディングの落ち着き、ビューポートが静止状態になったというスクロールジェスチャの実際の物理に基づいています。scrollendには設定可能なタイムアウトがなく、低速スクロールに惑わされることはありません。実際には、scrollendは通常200msデバウンスより50〜500ms速く発火し、最終位置について誤ることがありません。

scrollendはタッチスクロールやトラックパッドの慣性で動作しますか?

はい。scrollendはすべてのスクロール入力タイプを考慮します。慣性を伴うタッチスクロール、トラックパッドジェスチャースクロール、マウスホイールクリック、キーボードスクロール(Page Up、Page Down、矢印キー)、プログラムによるscrollTo/scrollBy呼び出し。イベントは、タッチやトラックパッドジェスチャの慣性フェーズを含む、これらの入力のいずれかの後にスクロール位置が完全に落ち着いたときに発火します。

scrollendが発火する前にユーザーが再びスクロールを始めたらどうなりますか?

前のジェスチャの慣性フェーズ中に新しいスクロールジェスチャが開始された場合、保留中のscrollendイベントはキャンセルされ、新しいジェスチャ用に新しいイベントがスケジュールされます。これは正しい動作です。scrollendはスクロールが実際に停止したときにのみ発火する必要があり、新しいジェスチャはスクロールが停止していないことを意味します。デバウンスされたスクロールハンドラはこのシナリオで誤検知を生成し、ジェスチャ間で発火する可能性があります。

scrollendのデフォルト動作をキャンセルまたは防止できますか?

いいえ。scrollendは完了を知らせる読み取り専用イベントです。キャンセルするデフォルト動作はなく、preventDefault()を呼び出しても効果はありません。スクロールアクションが完了し、ブラウザが最終スクロール位置にコミットした後に発火します。スクロール動作に影響を与える必要がある場合は、代わりにscrollイベントまたはポインタイベントのアプローチを使用してください。

関連ツール

その他のhtmlツール

こちらもお試しください

こちらもお試しください