【问题标题】:change background-image of div with animation用动画改变 div 的背景图像
【发布时间】:2015-06-29 12:06:49
【问题描述】:

我想创建一个小滑块来每秒更改我的 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});
            });

        }

    });

【问题讨论】:

  • 我认为fadeOut主要用于图像动画。只是说..

标签: javascript jquery html css


【解决方案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

【讨论】:

    【解决方案2】:

    希望对你有帮助

    html

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

    CSS

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

    Js

     $(function () {
                var arrayOfPartenaires = [
                "http://fotos2013.cloud.noticias24.com/animales1.jpg",
                "http://www.schnauzi.com/wp-content/uploads/2013/03/animales-en-primavera.jpg",
                "https://johannagrandac.files.wordpress.com/2015/01/conejos.jpg",
                 "http://png-4.findicons.com/files/icons/1035/human_o2/128/face_smile.png",
                "http://icons.iconarchive.com/icons/rokey/the-blacy/128/big-smile-icon.png",
                "http://simpleicon.com/wp-content/uploads/smile-256x256.png"
            ];
                var loaders = 0;
                function cycleImages() {
                    var element = arrayOfPartenaires[loaders];
                    $("#imags").css({ 'background-image': 'url(' + element + ')' }).animate({ opacity: 1 }).hide().fadeIn("slow");
                    if (loaders < arrayOfPartenaires.length) {
                        loaders = loaders + 1;
                        if (loaders >= arrayOfPartenaires.length) {                        
                            loaders = 0;
                        } 
                    }
                    else {
                        loaders = 0;
                    }
                    console.log(loaders, arrayOfPartenaires[loaders]);
                }
                cycleImages();
                setInterval(function () { cycleImages() }, 3000);
            });
    

    jsFiddel Demo

    【讨论】:

    • 为什么我需要复制你的答案?这是请求@wawanopoulos 的基本逻辑:)
    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    相关资源
    最近更新 更多