5

我有一个包含 10 张图片的页面,一旦下载了图片,我想将它们一个接一个地淡入淡出。如何检测图像已加载并准备好显示?我应该遍历加载的图像fadeIn 并且一旦fadeIn 等待下一个加载吗?

4

3 回答 3

6

只需在图像上使用 load() 事件。例如

$('#some_image').hide()
    .load(function () {
      $(this).fadeIn();
    })
    .attr('src', 'images/headshot.jpg')
于 2009-08-18T15:21:21.703 回答
0

您可以预加载图像(参见此处),然后在循环中依次调用淡入和淡出方法。

于 2009-08-18T15:16:51.460 回答
0

(基于克里斯埃里克森的回答)

您可以通过在将事件添加到 DOM 之前将事件添加到图像来避免潜在的竞争条件(未经证实,但我喜欢安全地进行操作)。这种方法也适用于使图像相互叠加。

这就是我用于画廊控件的内容,我在另一个图像之上添加一个图像并将其淡入 - 如果我已经添加了 2 个图像,我将删除底部图像。

var url = .....;
var container = $('#images_container');

$("<img />").hide().load(function () {
    $(this).fadeIn(); 
}).attr('src', url).appendTo($(container ));

if ($(container).children().length > 2) {
    $(":nth-child(1)", container).remove();
}

这是HTML:

<div id="images_container"></div>

CSS 必须像这样设置,否则图像将堆叠而不是彼此重叠。

#images_container {
   position: relative;
}

#images_container {
   position: absolute;
}
于 2011-04-28T05:48:55.300 回答