読み込みに約2〜3分かかる5MBの画像があります。ロード中、ロード画面が欲しいです。画像が読み込まれると、その読み込み画面は消えます。(画像はスプライト画像です。CSSを使用して分割します)。
これが可能である場合、どうすればそれを行うことができますか?これが不可能な場合、画像の読み込みを非表示にする(または画像サイズを小さくする)ために他にどのような方法を使用できますか?
読み込みに約2〜3分かかる5MBの画像があります。ロード中、ロード画面が欲しいです。画像が読み込まれると、その読み込み画面は消えます。(画像はスプライト画像です。CSSを使用して分割します)。
これが可能である場合、どうすればそれを行うことができますか?これが不可能な場合、画像の読み込みを非表示にする(または画像サイズを小さくする)ために他にどのような方法を使用できますか?
その画像はスプライト画像です。
私はそれらを分割するためにcssを使用します。
記載されていない追加情報がない限り、5MBではCSSスプライトの利点をすべて打ち負かしています。それを別々のファイルに分割し、オンデマンドで遅延ロードします。
jQueryを使用している/使用できる場合、このプラグインは遅延読み込みをうまく実行します。
また、可能な限り最高の圧縮を使用していることを確認してください。可逆圧縮を使用する必要がある場合でも、画像ファイルからメタデータを削除することで得られるメリットがいくつかあります。
Photoshopの「Web用に保存」は、不可逆圧縮(品質とサイズ)のバランスをとるのに最適であり、画像ファイルにメタデータを埋め込まないオプションも提供します。Photoshopにアクセスできない場合は、YahooSmushItなどのツールを使用できます。
ページ/要素をいくつかの読み込みレイヤーの後ろに隠し、画像が読み込まれた後にそのレイヤーを削除するだけです。
<!-- within you site header -->
<script type="text/javascript">
/* display loader only if JavaScript is enabled, no JS-lib loaded at this point */
document.write('<div id="loader" style="display:table; position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 10000; background: #fff;">'
+ '<div style="display:table-cell; vertical-align:middle; text-align: center;">'
+ 'loading…<br /><img src="icon.load.gif" />'
+ '</div></div>');
</script>
<!-- at the bottom of you HTML (right before closing BODY-tag) -->
<script src="jquery.min.js"></script>
<script type="text/javascript">
/* hide the loading-message */
$(window).load(function(){
$('#loader').fadeOut(500);
});
</script>
秘訣は、$(window).load()
すべてのページコンテンツが完全にロードされるまで起動されないイベントハンドラーとして使用することです。