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の日本語リファレンスサイトがあるので一度チェックしてみるといろいろ解決できたりしますよ。