このブラウザでは loading 属性が
<img src="/images/sample_01.jpg" width="960" height="593" alt="">
<img loading="lazy" class="lazyload"
src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
data-src="/images/sample_02.jpg"
width="960" height="593" alt="">
<img loading="lazy" class="lazyload"
src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
data-src="/images/sample_03.jpg"
width="960" height="593" alt="">
<img loading="lazy" class="lazyload"
src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
data-src="/images/sample_04.jpg"
width="960" height="593" alt="">
<!-- data-src と class="lazyload" の指定なし -->
<img loading="lazy"
src="/images/sample_05.jpg"
width="960" height="593" alt="">
<img loading="lazy" class="lazyload"
src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
data-src="/images/sample_06.jpg"
width="960" height="593" alt="">
<img loading="lazy" class="lazyload"
src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
data-src="/images/sample_07.jpg"
width="960" height="593" alt="">
<img loading="lazy" class="lazyload"
src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
data-src="/images/sample_08.jpg"
width="960" height="593" alt="">
<img loading="lazy" class="lazyload"
src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
data-src="/images/sample_09.jpg"
width="960" height="593" alt="">
<img loading="lazy" class="lazyload"
src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
data-src="/images/sample_10.jpg"
width="960" height="593" alt="">
<!-- data-src、data-srcset、 class="lazyload" の指定なし -->
<img loading="lazy"
src="/images/large/sample_11.jpg"
srcset="/images/small/sample_11.jpg 640w, /images/medium/sample_11.jpg 960w, /images/large/sample_11.jpg 1200w"
sizes="100vw"
alt="">
<!-- data-src、data-srcset、 class="lazyload" の指定なし -->
<picture>
<source
media="(min-width: 1200px)"
srcset="/images/large/sample_12.jpg">
<img loading="lazy"
src="/images/sample_12.jpg"
alt="">
</picture>
//loading 属性がサポートされていれば
if ('loading' in HTMLImageElement.prototype) {
//loading 属性に lazy が指定されている img 要素
const images = document.querySelectorAll('img[loading="lazy"]');
//data-srcset が指定されている img 要素
const img_srcset = document.querySelectorAll("img[data-srcset]");
//data-srcset が指定されている source 要素
const sources = document.querySelectorAll("source[data-srcset]");
//loading="lazy" が設定されている要素があれば
if(images.length > 0) {
images.forEach(img => {
//data-src 属性が設定されていれば img 要素の src 属性の値に data-src 属性の値を設定
if(img.dataset.src) {
img.src = img.dataset.src;
}
});
}
//data-srcset が指定されている img 要素があれば
if(img_srcset.length > 0) {
img_srcset.forEach(img_srcset => {
//img 要素の srcset 属性の値に data-srcset 属性の値を設定
img_srcset.srcset = img_srcset.dataset.srcset;
});
}
//picture 要素
//data-srcset が指定されている source 要素があれば
if(sources.length > 0){
sources.forEach(source => {
//source 要素の srcset 属性の値に data-srcset 属性の値を設定
source.srcset = source.dataset.srcset;
});
}
} else {
//loading 属性がサポートされていない場合は動的に lazysizes ライブラリーを読み込む
// script 要素を生成
const script = document.createElement('script');
//ダウンロードしてある lazysizes を script 要素の src に指定
script.src = 'lazysizes.min.js';
//script 要素を body に追加
document.body.appendChild(script);
}