ここでの最善の解決策は、その画像を小さくする方法を見つけることです。そこにいくつかの優れた圧縮ツールがあります。ImageMagick、いくつかのJPEG固有のツール(http://jpegclub.org/)またはPNG固有のツール(http://www.aboutonlinetips.com/optimize-and-compress-png-files/)を確認することをお勧めします。
しかし、具体的に求めていることを実行するには(準備ができるまでページ上のすべてを非表示にしてからロードする)、jQueryを使用して次のようにすることができます。
$(function(){
var bgimage = new Image();
bgimage.src="{your giant image's URL goes here}";
$(bgimage).load(function(){
$("body").css("background-image","url("+$(this).attr("src")+")").fadeIn();
});
});
これは、すべての要素がページに読み込まれるまで待機してから、新しいImageオブジェクトを作成します。ソースをより大きな画像ファイルにポイントします。ロードが完了すると、この新しくロードされた画像を使用するように背景を変更します。これは、ブラウザが画像をキャッシュしたため、すぐにロードされるはずです。
準備ができるまでページ上のすべてのコンテンツを非表示にしたい場合に備えて、fadeIn()があります。これは、あなたが隠されるべきであることを意味します。
何らかの理由で、fadeIn()は、show()や、removeClass()を介して「非表示」クラスを削除するよりもうまく機能します(そのアプローチを採用している場合)。後者の2つのアプローチでは、タグの高さをページのコンテンツに合わせてサイズ変更するように見えるため、背景画像全体が表示されない可能性があります。
正直なところ、私はこのアプローチを本当にお勧めしません:p
少なくとも、準備ができるまでページ上のすべてのコンテンツを非表示にする場合はそうではありません。
これは、部分的に読み込まれた画像が表示されないように、準備ができたときにのみ背景画像を表示するための良いアプローチかもしれません...
読み込みが遅いということは、大きな画像を使用することのトレードオフにすぎません。