@Bergiの答えを拡張する:
一般的に行われているのは、画像要素を必要な場所にレンダリングすることですが、それらsrc
を他の 1 ピクセルのダミー画像に置き換えて、実際のソースを別の場所 (データ属性など) に保持します。
<img src="/img/dummy.png" data-original-src="/img/path/to/real-image.png">
次に、ページの準備ができたら (完全に読み込まれる前に、jQuery.ready を使用します)、それらの画像をすべて見つけて、元のソースを使用して対応する外部画像を作成します。
そのような外部画像ごとに、読み込まれると(jQueryの画像読み込みコールバックを使用) 、サイズを測定してsrc
、最後に元の画像を実際のソースに置き換えることができます。これは、ブラウザーが既に読み込まれているため、瞬時に行われますこの画像の URL:
$('img').each(function() {
var originalImg = $(this);
var externalImg = $('<img>').attr('src', originalImg.data('original-src'));
externalImg.load(function() {
// measure, scale, center, and pre-process as you wish
originalImg.attr('src', externalImg.attr('src'));
originalImg.data('original-src', null);
}); // you'll also have to use .complete() here, see links for details
}
これにより、画像が完全にロードされ、拡大縮小 (または中央揃え、または前処理) する機会が得られるまで、画像が表示されません。