2009-06-11 67 views
1

我是JQuery的新手,我試圖用它做一個概念驗證。我試圖使用JQuery來:1)下載一個大的(> 500kb)圖像文件2)將圖像設置爲一個元素的背景,當下載時3)淡入(基本上是Bing.com的方式)。 StackOverflow社區慷慨地幫助我解決這個問題的大部分方法,如here所示。但是,我仍然有一個我無法弄清楚的問題。JQuery - 將背景圖像設置爲圖像對象

如何讓下載的圖像的HTML元素的背景圖像?我在http://jqueryfordesigners.com/image-loading/看到的代碼將圖像元素附加到DIV。但是,我想將圖像設置爲一次下載的DIV的背景圖像並淡入。這是可能的嗎?我似乎在這個圈子裏繼續前進。謝謝。

回答

5

將額外的div(與width: 100%; height: 100%)放入#loader<div id="loader"><div class="image"></div></div>

然後,而不是$("#loader").append(this);你應該喜歡的東西$("#loader div.image").css("background","url(images/headshot.jpg) no-repeat 0 0");。這樣,img元素將在文檔樹中保持不可見狀態,但是希望緩存的背景(至少大多數瀏覽器都會這樣做)將顯示在您的div中。

然後,最後,做你與.fadeIn()內格的效果。

還沒有我自己試過,但它必須是這樣的。

0

假設你正在使用的瀏覽器下載圖像,一旦你擁有了它,它在瀏覽器的緩存。將DIV的背景圖像設置爲圖像的URL不應再次下載,而應從緩存中加載。然後你可以放棄你的圖像對象。

不過,我不知道的方式採取過渡效果CSS背景圖像。如果淡入是一個很難的要求,最好將DIV的背景顏色設置爲透明,並將圖像元素完全放置在DIV後面。然後你可以使用普通的jQuery技術來淡化它。

-1

事實上,所有你需要做的是一樣的東西

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

您可以完全跳過「下載」部分,因爲瀏覽器將採取照顧。

+0

正如我所理解的那樣,Villager希望在圖像最終加載時具有花哨的淡入效果。也可能是旋轉的「加載...」動畫。 – drdaeman 2009-06-11 17:28:34

0

正如我在回答這個問題時所說的那樣。下載後它在緩存中,所以它不會再被下載。