嗯,我認爲事情可能會更簡單,如果你只使用img
標籤,但如果你想使用背景圖像,那麼我只能想出一個解決辦法。
訣竅是創建一個新的圖像(使用the Javascript image object),並確保它已加載,但不顯示此圖像。一旦圖像加載並在緩存中,該圖像將在您的圖庫中作爲背景圖像提供。
因此,您所要做的就是確保在加載相應的圖像後,您只能更改圖像的背景圖像LI
。您最初可以加載所有LI
s的默認「加載」圖像。
所以,你的代碼將是這樣的:
HTML(該style
用於加載圖像的定義可能是你外部樣式表):
<ul>
<li id="pic1" style="background-image:url('images/loading.gif')"></li>
<li id="pic2" style="background-image:url('images/loading.gif')"></li>
<li id="pic3" style="background-image:url('images/loading.gif')"></li>
...
</ul>
你的jQuery/JavaScript的:
var img = new Array();
// The following would be in some sort of loop or array iterator:
var num = [NUMBER] // You'd use this number to keep track of multiple images.
// You could also do this by using $("ul>li").each() and using the index #
img[num] = new Image();
// Specify the source for the image
var imgSource = "http://yourimage.com/example.jpg";
// only append the corresponding LI after the image is loaded
img[num].onload = function() {
$("#pic" + num).attr("style", "background-image:url('" + imgSource + "')");
};
img[num].src = imgSource;
你將不得不爲每個LI
有適當的CSS/ID等,你將不得不適應上述循環或功能你用來展示你的畫廊。
Here's a jsFiddle example。 (爲了測試的目的,這是一個很大的圖像,所以需要一段時間才能加載)。
你有沒有想過使用sprite ?,所以你只需要將1個圖像加載到DOM中,然後每個圖像被切片,就會使生活變得更簡單,只需加載css表單onload事件爲sprite圖像,然後只需顯示所有元素的加載器,直到加載CSS表單。 – RobertPitt 2010-08-16 10:39:03
不可能,圖像來自DB – 2010-08-16 11:54:40