コンポーネント
← すべてのコンポーネント

ビューポート侵入で遅延ロード

stimeo--lazy-frame

<turbo-frame> をビューポート接近時(またはフォーカス到達時)まで遅延ロード。

  • Rails / Turbo

stimeo--lazy-frame コントローラは <turbo-frame> のロードをビューポート接近時まで遅延させ、初期表示を軽くします。Turbo 標準の loading="lazy" は描画時に発火しビューポート侵入では発火しないため、本パーツは rootMargin を設定できる IntersectionObserver で明示制御し、加えてキーボード/AT 利用者向けにフォーカス到達フォールバックも備えます。URL は url Value に保留し(src には持たせない)、Turbo に先読みさせません。フレームが交差(rootMargin 内)するかフォーカスが入ると、url を src へ書き写してロードを起動し、 data-lazy-loaded を付与して load を発火します。once(既定)はその後監視を解除し、once=false は再侵入でフレームを reload します。挙動のみで、ロードとフレームの中身は Turbo / サーバの責務、読込中の表示は Frame Loading State の領分です。起動は冪等で(data-lazy-loaded が二重起動を防ぎ、Turbo キャッシュ復元の既ロードを尊重)、observer とフォーカスリスナはロード後(once)/disconnect(Turbo 遷移含む)で解放します。

実行中

下にスクロールしてください。下のフレームは URL を保留し、ビューポートに入って初めてロードします。

未ロード(下にスクロールするとロード)