3

问题是我的背景图像大小不同且不可预测,因此使用 CSS 过渡将为拉伸设置动画,这看起来很难看。因此,我真的需要用 JS 来做这件事。

var images = [
    "http://ns223506.ovh.net/rozne/e800637ee8c7de5cdaed8df8ea3635f1/wallpaper-2585508.jpg",
    "http://ns223506.ovh.net/rozne/15382371cb0d5b9319f5f4469bbc4511/wallpaper-2585497.jpg"
];

var counter = 0;
setInterval(function () {
    $(".bg").css('backgroundImage', 'url("' + images[counter] + '")');

    $('<img>').attr('src', images[++counter]); // preload the next image

    if (counter == images.length) counter = 0;

}, 2000);

http://jsfiddle.net/mVAvF/1/

我想要做的是淡入新的背景图像,同时淡出旧的。有什么建议么?

4

1 回答 1

2

您不能在同一元素中将一个背景淡入另一个背景。您必须在当前背景的顶部或后面添加另一个元素,然后如果新元素在顶部,则将新元素淡入,如果新元素在后面,则将旧元素淡出。

我之前回答了一个类似的问题,其中包含一个 jsFiddle: jQuery 背景图像旋转脚本 - 寻找修改

于 2013-02-22T14:00:37.840 回答