2009-06-11 18 views
1

私はJQueryを初めて使用しました。私はそれを使って概念実証を試みています。私はJQueryを使用して、1)大きな(> 500kb)イメージファイルをダウンロードしようとしています。2)イメージをダウンロードするときに要素の背景として設定します。3)フェードインします(基本的にはBing.comで行います)。 StackOverflowコミュニティは、hereと表示されているように、この問題のほとんどを寛大な助けにしてくれました。しかし、私はまだ分かりませんが1つの問題があります。JQuery - イメージオブジェクトに背景イメージを設定

ダウンロードしたイメージをHTML要素の背景イメージにするにはどうすればよいですか?私がhttp://jqueryfordesigners.com/image-loading/で見るコードは、image要素をDIVに追加します。しかし、一度ダウンロードして消すとDIVの背景イメージとしてイメージを設定したいのですが、これは可能ですか?私はこれについて円で回り続けるようだ。ありがとうございました。

答えて

5

<div id="loader"><div class="image"></div></div>に別のdiv(width: 100%; height: 100%)を追加します。

$("#loader").append(this);の代わりに$("#loader div.image").css("background","url(images/headshot.jpg) no-repeat 0 0");のようにする必要があります。このようにして、img要素はドキュメントツリーからは見えなくなりますが、バックグラウンド - うまくいけばキャッシュされます。少なくともほとんどのブラウザはそうするでしょう - あなたのdivに表示されます。

最後に.fadeIn()で内側のdivに影響を与えます。

これを自分で試したことはありませんが、このようなものでなければなりません。

0

イメージをダウンロードするためにブラウザを使用していると仮定すると、イメージはブラウザのキャッシュに保存されます。 DIVの背景イメージをイメージのURLに設定すると、それを2回目にダウンロードするのではなく、キャッシュからロードするだけです。その後、イメージオブジェクトを破棄することができます。

しかし、CSSの背景画像にトランジション効果を適用する方法はわかりません。フェードインが難しい場合は、DIVの背景色を透明に設定し、画像要素をDIVの後ろに配置する方がよい場合があります。その後、通常のjQueryテクニックを使用してフェードインすることができます。

-1

は実際に、あなたがしなければならないすべては、ブラウザがそのの世話をしますので、あなたは完全に、「ダウンロード」部分をスキップすることができ

$("#myDiv").css({background-image: "url('http://someserver.com/someImage.jpg')"}) 

のようなものです。

+0

私が質問を理解したように、村人は画像が最終的に読み込まれるときに幻想的なフェードイン効果を持ちたいと思っています。そしておそらく回転する「読み込み中...」アニメーションもあります。 – drdaeman

+1

ああ、私はそれを手に入れます。とにかく、drdaemanによってより良い答えが投稿されました – chris166

+0

これを試したとき、無効な構文エラーが発生しました: '$("#myDiv ")。css({'background-image':" url( 'http: //someserver.com/someImage.jpg ') "})' 'background-image'プロパティ名の前後に' '' – 19greg96

0

私はその質問に私の答えで言った。ダウンロード後はキャッシュに保存されているため、2度目にはダウンロードされません。

関連する問題