認識される読み込み時間に影響を与える可能性があるのは、初期の#wrapper
可用性です。つまり、初期読み込み時にページの一部ではなく、JSで追加された場合、背景画像の読み込みは開始されませんが、これが一般的なシナリオになるとは思えません。
背景画像の読み込みはdomreadyハンドラーには影響しませんが、背景の可用性を高速化したい場合は、次のことを試すことができます。
#wrapper {
background: url(large-image.png) no-repeat center center,
url(small-image.png) no-repeat center center;
}
mdnから:
CSS3を使用すると、要素に複数の背景を適用できます。これらは、最初に提供した背景を上に、最後の背景を後ろにリストして、互いに重ね合わせます。最後の背景のみに背景色を含めることができます。
これにより、高価な高解像度の画像を読み込んでいる間に、背景の最下層として低解像度の画像を効果的に読み込むことができます。古き良き時代を覚えていlowsrc
ますか?これが、私たちがシミュレートしている動作です。低解像度と高解像度の両方の画像のダウンロードが同時に開始されることに注意してください。したがって、これは、大きな画像が本当に耐えられないほど大きい場合にのみ使用してください。
また、画像を最適化したと言っています。私はまだYahooSmushItを試してみることをお勧めします、品質を損なうことなくPNGからmuich冗長データを取り除くことができる方法に驚かれることでしょう(私は現在彼らのサービスを使用して断続的な問題を抱えていますが、それは数回の試行後に機能します、あるいはあなたはOptiPNGを使うことができますただし、単一のイメージ用にセットアップして構成するのは非常に手間がかかります)
アップデート:
domreadyが起動するのを待って、を使用してスタイルを追加することをお勧めします$("#wrapper").css(...);
。これは、要素にインラインスタイルを追加することです。これにより、1)セレクターの特異性が妨げられます。2)この特定のインスタンスにのみ適用されます#wrapper
(たとえば、サーバーからのajaxコンテンツの一部である場合は不適切です)。
または、実行時に新しいcssルールを追加することもできます。
$('head').append('<style type="text/css">#wrapper {background: url(large-image.jpg) no-repeat center center;}</style>');
これは、ドキュメントのスタイルシートに有機的に追加され、の将来のすべてのインスタンスに適用さ#wrapper
れるだけでなく、セレクターの特異性を妨げることもありません。(ハンドラーが起動されてスタイルが適用される前に)スタイルが設定されていないコンテンツが短時間点滅することになりますので、このアプローチは推奨しません。