ウェブサイトに表示している画像がたくさんあります。
さまざまなレベルの品質の各画像があります。私は親指(〜10kb)、小(〜200kb)、中(〜1.2mb)、大(〜2.5mb)を持っています。私が望むのは、親指の画像が表示され、javascriptが小さいものをロードし、ロードされたときにそれを置き換え、次にメディアをロードしてそれを置き換えることです。そうすれば、画像がすぐに表示され、品質がどんどん良くなります。
画像は div の背景として表示されており、サイズは含まれているように設定されているため、小さい画像が引き伸ばされてスペースを埋めます。
画像をロードし、ロード時に背景を置き換えるjQueryに必要なものはすべてです。
アップデート
これが私がそれを解決した方法です。各画像を読み込み、完了時に表示する非表示の img 要素を作成しました。しかし、私はそれを片付けるのを手伝ってくれる人にノーとは言いません。
htmlはちょうど
<img id="image_loader" style="display:none;" />
そしてjQueryは
$("#image_loader").attr("src", SmallURL);
$("#image_loader").load(function() {
$("#image_container").css("background-image", 'url('+SmallURL+')');
$("#image_loader").attr("src", MedURL);
$("#image_loader").load(function() {
$("#image_container").css("background-image", 'url('+MedURL+')');
$("#image_loader").attr("src", LargeURL);
$("#image_loader").load(function() {
$("#image_container").css("background-image", 'url('+LargeURL+')');
$("#image_loader").unbind('load');
});
});
});
しかし、これはひどく厄介です。URLを配列に入れて実行しようとしました$.each
が、大きくスキップするだけです。
2回目の更新
また、すべての画像が読み込まれたら、load 関数のバインドを解除する必要があることもわかりました。そうしないと、無限ループに陥ってしまいます。これをクリーンアップできれば、無限ループが発生しない方法で実行できることを願っています。
これをきれいにする方法についてのアイデアはありますか?