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

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

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

1.『inview.js』だけ

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

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

コードはこちら

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");
    }
  });
});

サンプルページはこちら

2.『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;
}

サンプルページはこちら

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

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

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

コードはこちら

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

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery.inview/1.0.0/jquery.inview.min.js"></script>
<script type="text/javascript" src="js/lazysizes.min.js"></script>
$(function(){
  $(".inview").on("inview", function (event, isInView) {
    if (isInView) {
      $(this).stop().addClass("is-show");
    }
  });
});

こんな感じで使っています

メモ

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

jQuery日本語リファレンス

jQuery(英語版)

さいごに

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

関連記事

【jQuery】スクロールして表示領域に入ったら要素をアニメーション表示させる『inview.js』の実装サンプル集

【JavaScript】画像を遅延表示させる『lazysizes』の実装サンプル集

Web design gallery - デザインのこと - ウェブデザインあつめました。
いつかのこと

おすすめ

Googleさんのおすすめ

Googleさんのおすすめ

デザインの記事

日産|ブランドサイト
日産|ブランドサイト
ぼくのトミカ #1
ぼくね、もっと走りたいんだよ