javascript - 用动画更改 div 的背景图像

标签 javascript jquery html css

我想创建一个小 slider 来每秒更改我的 div 的背景图像。

我的代码暂时不起作用,图像没有改变。理想情况下,我希望脚本以无限模式运行..

HTML

<div id="slidesPartenairesHome"></div>

CSS

#slidesPartenairesHome {
    background-size: contain;
    background-position: center center;
    width: 300px;
    height: 170px;
    margin-left: 120px;
}

JS

   $( document ).ready(function() {

        var arrayOfPartenaires = [
            "images/partenaires/a.png",
            "images/partenaires/b.jpg",
            "images/partenaires/c.jpg",
            "images/partenaires/d.png",
            "images/partenaires/e.png",
            "images/partenaires/f.jpg",
            "images/partenaires/g.jpg",
            "images/partenaires/h.jpg",
            "images/partenaires/i.png",
            "images/partenaires/j.jpg",
            "images/partenaires/k.jpg",
            "images/partenaires/l.jpg"
        ];


        for (var i=0; i<arrayOfPartenaires.length; i++) {

            var currentPartenaireImg = arrayOfPartenaires[i];

            $('#slidesPartenairesHome').animate({opacity: 0}, 'slow', function() {
                $(this).css({'background-image': 'url("'+currentPartenaireImg+')'}).animate({opacity: 1});
            });

        }

    });

最佳答案

你可以使用 window.setinterval,你也可以使用 setTimeout 但 setinterval is a litle bit more precise.

setinteval 示例:

window.setInterval(function(){
    var url = getCurrent();
    //start animation
    $('#slidesPartenairesHome').delay( 500 ).fadeTo(500, 0.3, function()
    {
        $(this).css('background-image', 'url(' + url + ')');
    }).fadeTo('slow', 1);
}, 1000);

// We start with index of 1 because we want to skip the first image, 
// Else we would be replacing it with the same image.
var index = 1;
     var arrayOfPartenaires = [
            "http://yourdomain.com/images/partenaires/a.png",
            "http://yourdomain.com/images/partenaires/b.png",
            "http://yourdomain.com/images/partenaires/c.png"
        ];

function getCurrent(){
    // We check if the index is higher than the ammount in the array.
    // If thats true set 0 (beginning of array)
    if (index > arrayOfPartenaires.length -1){
        index = 0;
    }
    var returnValue = index;
    index ++;
    return arrayOfPartenaires[returnValue];       
}

请注意,如果您真的想每 1 秒更改一次图像,背景将变化得非常快。

Fiddle

关于javascript - 用动画更改 div 的背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31115281/

相关文章:

javascript - 当 async prop Promise 解析时如何更新 React 组件?

javascript - 尝试使用 getUserMedia 和 Canvas 捕获桌面图像

JavaScript:如何将按钮元素的值分配给另一个div元素?

html - 在 float 情况下换行文本(CSS)

javascript - JQuery 提交函数有时工作

javascript - Froogaloop Vimeo API——无法在就绪事件之外调用 API 方法

javascript - 使用 $.ajax 发送基于原型(prototype)的类时出现 `this` 问题

jquery - 在表单提交上显示 div,适用于 Chrome、FFIE,但不适用于 Safari

css - HTML(5)/CSS 中的列布局

javascript - wkhtmltopdf.exe --no-stop-slow-scripts 不起作用?