画像の遅延読み込みを簡単に実装できるIE対応の超軽量ライブラリ「LazyIMG.js」
SEOにも強い、脱jQueryの画像の遅延読み込みをしてくれるライブラリ、「LazyIMG.js」の紹介です。
このライブラリの特徴はGoogle先生推奨の「 IntersectionObserver 」で構築されていること、実装がとても簡単なこと、そして超軽いことです。
サイト制作にぜひ役立ててみてください。
LazyIMG.jsの使い方
こちらのページからJavascriptファイルをダウンロードします。
bodyタグ直下にスクリプトを読み込みます。
<script src="js/lazyimg.js"></script>
あとは src属性を data-src に置き換え、クラス名に .lazyimg を追加するだけです。
<img data-src="img/xxx.jpg" class="lazyimg">
<img data-src="img/xxx.webp" class="lazyimg">
次世代フォーマットにも対応しています。記述のやり方は特に変わりませんが、非対応のブラウザのことも考えて pictureタグを使うことをおすすめします。
pictureタグでの使い方は以下の通りです。
<picture class="lazyimg">
<source data-src="img/xxx.webp" type="image/webp">
<img data-src="img/xxx.jpg" alt="test">
</picture>
pictureタグにクラス名 .lazyimg、sourceタグ、imgタグにそれぞれdata-srcを記述するだけです。
background-image にも対応しています。
記述の仕方は、imgタグ、pictureタグ以外のタグに、data-srcとクラス名.lazyimg を書くだけです。
<div class="lazyimg" data-src="img/xxx.jpg"></div>
iframeに対応させる
YouTube や GoogleMAP などを埋め込むときにiframeをよく使います。
対応方法は画像を対応させる方法と変わりありません。
<iframe class="lazyimg" data-src="https://xxx.com"></iframe>
CSSで background-image に対応させる
WebPをCSSで対応させるときなどに使います。
このJSは data-src を付与していない要素に対して class名 -active を付与してくれます。
対応方法は以下の通りです。
<div class="img lazyimg"></div>
.img {
width: 100px;
height: 100px;
background: no-repeat center center / contain;
}
.img.-active {
background-image: url(xxx.jpg);
}
ajaxで読み込んだ画像にも対応させる
lazyimgを再度呼び出せば対応することができます。
lazyimg();
IEへの対応方法
残念ながらIntersection Observerは対応していません。なのであきらめてください。IE滅んでください。
対応させるためにポリフィルを読み込みます。
<script src="https://polyfill.io/v2/polyfill.min.js?features=IntersectionObserver"></script>