Unveil.jsの使い方

Bookmark this on Google Bookmarks
LINEで送る
Pocket

遅延ロードを実装できる。
ここでいう遅延ロードとは、最初はページの見える部分(viewport)の外側にある画像を読み込まずに、スクロールして見えたら読み込みすること。

Unveil.jsは、遅延ロードの定番jQueryプラグインのLazy Loadからエフェクト等を削除して動作や容量を軽くしたもの。
less than 1k.と書いてある。

Unveil.js
http://luis-almeida.github.io/unveil/

使い方
src属性に、ダミー画像のURLを入れ
data-src属性に、画像のURLを入れる
retina用の画像URLも指定できる

<img src="bg.png" data-src="img1.jpg" />
<img src="bg.png" data-src="img2.jpg" data-src-retina="img2-retina.jpg" /> 

javascriptを使えないユーザーに対してはnoscriptを利用すると良い

<noscript>
  <img src="img1.jpg" />
</noscript> 

ページを読み込んだ時に、unveilを実行する。

$(document).ready(function() {
  $("img").unveil();
});

例えば、特定の要素に含まれるimgのみに反映したいときは以下
idがlistの要素に含まれるimg

<div id="list">
  <img src="bg.png" data-src="img1.jpg" />
</div>

$(document).ready(function() {
  $("#list img").unveil();
});

Threshold機能
デフォルトではスクリーンに表示されたときに画像を読み込み始めるが、
以下のようにすると、スクリーンに表示される200ピクセル手前で画像を読み込み始める。

$("img").unveil(200);

Callback機能
2番目の引数にコールバック関数を指定できる。
画像が読み込まれたときに実行される。

CSS3やjQueryのanimation機能を使って
画像が表示されたときにエフェクトをかけたりできる。

img {
  opacity: 0;
  transition: opacity .3s ease-in;
}

$("img").unveil(200, function() {
  $(this).load(function() {
    this.style.opacity = 1;
  });
});

Trigger機能
viewport(ページの見える部分)の外側にありまだ読み込んでない画像を必要なときに読み込むことができる。

$("img").trigger("unveil");