1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

fullPage.jsで画像や背景を遅延読み込みする方法

Posted at

はじめに

遅延読み込みライブラリは、fullPage.js では機能しない場合があります。

その理由は、fullPage.jsが従来の方法で scroll イベントをトリガーしないためです。
代わりに、fullPage.jsはCSSトランジションまたはJavaScriptを使用してスクロールをシミュレートします。

fullPage.jsで遅延読み込みを行う方法

方法1: 簡単な方法

現在の遅延読み込み技術をfullPage.jsと組み合わせる最も簡単な方法は、fullPage.jsのオプションscrollBar:trueを使用することです。

これにより、fullPage.jsは他のページのようにスクロールバーを表示し、ライブラリが期待どおりに機能します。

方法2: fullPage.jsの遅延読み込みオプションを使用する

fullPage.jsはデフォルトで遅延読み込みオプションを提供しているため、ページに追加のスクリプトを追加する必要はありません。
実際、この方法は、水平スライドの遅延読み込みや拡張機能との完全な互換性など、特定のシナリオでより効果的に動作します。

背景画像や動画の遅延読み込み

この方法を選ぶ場合は、遅延読み込みオプションlazyLoadingを有効化し(デフォルトでは有効です)、画像ファイルのソースに通常のsrcではなくdata-src属性を使用します。以下はその例です:

<div class="section">
    <img data-src="image.png">

    <video>
	<source data-src="video.webm" type="video/webm" />
	<source data-src="video.mp4" type="video/mp4" />
    </video>
</div>

この場合、このセクションの画像と動画は、このセクションに到達したときにのみ読み込まれます。前のセクションを離れたタイミングで読み込みを開始するため、読み込み速度が向上します。

CSS背景の遅延読み込み

CSS背景を使用する場合、遅延読み込みを実現するにはCSSを修正する必要があります。

まず、新しいセクションに到達するたびに、例えばlazy-loadedというクラスを追加するように設定します。これにより、訪問したセクションはすべてこのクラスを持つようになります。訪問していないセクションにはクラスが追加されません。

new fullpage('#fullpage', {
    onLeave: function(origin, destination, direction) {
        destination.item.classList.add('lazy-loaded');
    }
});

次に、このクラスがセクションに追加された場合のみ画像を表示するような「条件付きCSS」を作成します:

.section1 {
   background-size: cover;
}

.section1.lazy-loaded {
    background: url(image.jpg);
}

もちろん、ページ読み込み時に表示される背景にはこの「条件」を適用する必要はありません。

遅延読み込みの最終例

背景の遅延読み込みを使用したCodePenの例を作成しました。

See the Pen lazyLoad - backgrounds - fullpage.js by Álvaro (@alvarotrigo) on CodePen.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?