【jQuery】遅延表示『inview.js』と『lazysizes.js』を組み合わせて、『重いページよ、さようなら』

【jQuery】遅延表示『inview.js』と『lazysizes.js』を組み合わせて、『重いページよ、さようなら』

jQueryの遅延プラグイン『inview.js』と、画像の遅延表示ができる『lazysizes.js』を組み合わせるととてもいい感じだったので備忘録です。

ふわーっとできますかー
画像の読み込みを遅くして、コンテンツも遅くしてみましたー

『inview.js』だけ

スクロールすると、ふわーっと。
動き(アニメーション)がわかりやすいようにスタイル(CSS)を付けています。

See the Pen 【jQuery】『inview.js』下からフェードイン(ふわっと) by 125naroom (@125naroom) on CodePen.

HTMLとCSSとjQueryはこちら

HTML

<div class="section">
  <div class="imgBox inview fadeIn_up">
    <img src="https://125naroom.com/demo/img/simple01.jpg" alt="">
  </div>
  <div class="imgBox inview fadeIn_up">
    <img src="https://125naroom.com/demo/img/simple02.jpg" alt="">
  </div>
  <div class="txtBox inview fadeIn_up">
    <p>ふわっと</p>
  </div>
</div>

CSS

.fadeIn_up {
  opacity: 0;
  transform: translate(0, 50%);
  transition: 2s;
}
.fadeIn_up.is-show {
  transform: translate(0, 0);
  opacity: 1;
}

jQuery

$(function(){
  $(".inview").on("inview", function (event, isInView) {
    if (isInView) {
      $(this).stop().addClass("is-show");
    }
  });
});

『lazysizes.js』だけ

画像(img)に「lazyload」というクラスを付けます。遅延表示されると「lazyloaded」というクラスに変わります。
※ Chromeの検証ツールで確認するとよくわかります。

See the Pen lazysizes.jsで画像を遅延表示、デフォルト by 125naroom (@125naroom) on CodePen.

HTMLとCSSはこちら

HTML

<div class="section">
  <div class="imgBox">
    <img data-src="https://125naroom.com/demo/img/simple01.jpg" alt="" class="lazyload">
  </div>
  <div class="imgBox">
    <img data-src="https://125naroom.com/demo/img/simple02.jpg" alt="" class="lazyload">
  </div>
  <div class="imgBox">
    <img data-src="https://125naroom.com/demo/img/simple03.jpg" alt="" class="lazyload">
  </div>
</div>

CSS

.imgBox {
    text-align: center;
    margin: 50px 0;
}
.imgBox img {
    max-width: 100%;
    height: auto;
    vertical-align: top;
}

『inview.js』と『lazysizes.js』を組み合わせてみる

見た目は何も変わってないのですが、画像の読み込みを遅くしているのでサイトの表示速度の改善に効果的です。あー、重いサイト、どうにかしたいなー、って時におすすめです。

See the Pen 【jQuery】遅延表示『inview.js』と『lazysizes』を組み合わせてみるととてもいい感じです by 125naroom (@125naroom) on CodePen.

HTMLとCSSとJavaScriptはこちら

HTML

<div class="section">
  <div class="imgBox inview fadeIn_up">
    <img src="https://125naroom.com/demo/img/simple01.jpg" alt="" class="lazyload">
  </div>
  <div class="imgBox inview fadeIn_up">
    <img src="https://125naroom.com/demo/img/simple02.jpg" alt="" class="lazyload">
  </div>
  <div class="txtBox inview fadeIn_up">
    <p>ふわっと</p>
  </div>
</div>

CSS

.fadeIn_up {
  opacity: 0;
  transform: translate(0, 50%);
  transition: 2s;
}
.fadeIn_up.is-show {
  transform: translate(0, 0);
  opacity: 1;
}

JavaScript

$(function(){
  $(".inview").on("inview", function (event, isInView) {
    if (isInView) {
      $(this).stop().addClass("is-show");
    }
  });
});

メモ

jQueryのことで何かわからないことがあればjQueryの日本語リファレンスサイトがあるので一度チェックしてみるといろいろ解決できたりしますよ。

さいごに

速度アップしましたー
PageSpeed Insights(Googleさんのページ読み込み速度をチェックするサイト)で点数が低いときに是非ー

関連記事

Author

デザコト

あ、いいな、と思うWebデザインを紹介しています。デザインの参考に。やさしいデザインが多いです。Webデザインギャラリー『デザインのこと - Web design gallery』を運営しています。

Googleさんの
おすすめ

7

/

27

2024

Googleさんの
おすすめ

7

/

27

2024

デザインの記事

劇場アニメ「ルックバック」
あたらしい生活まで
【jQuery】スライダープラグイン「slick」実装サンプル集