слайд-шоу для фонового изображения div + jquery - PullRequest
4 голосов
/ 22 сентября 2009

У меня есть большой элемент div в заголовке, и в div есть много текстового содержимого и несколько полей. и у меня есть большое img как bg для этого div, теперь мне нужно сделать слайд-шоу для фона этого div: /

Как я могу сделать слайд-шоу для фонового изображения div?

Я много исследовал, но ничего не смог найти: /

Спасибо большое! оцените!

Ответы [ 5 ]

2 голосов
/ 23 сентября 2009

Я тоже искал слайдшоу css background background, спасибо за ваш вклад. Я исследовал ваше решение с помощью метода setTimeout, однако у меня были большие проблемы с ним (я нуб).

Я адаптировал решение peirix с альтернативой setInterval и придумал это;

var bgArr = ["images/TopImage-01.jpg", "images/TopImage-02.jpg", "images/TopImage-03.jpg" ]; 
var i=0;

// Start the slide show
var interval = self.setInterval("swapBkgnd()", 5000)  

function swapBkgnd() {
 if (i>(bgArr.length-1) ) {
  i=0
  $("#header").css("background-image", "url("+bgArr[i]+")");
 }
 else {
  $("#header").css("background-image", "url("+bgArr[i]+")"); 
 } 
 i++;
};

Теперь мне нужно добавить эффект затухания и предзагрузчик изображений, и я буду отсутствовать. Было бы интересно узнать, есть ли более аккуратный способ добиться этого.

2 голосов
/ 22 сентября 2009

Один из способов сделать это - создать массив фоновых изображений:

var bgArr = ["img/bg1.jpg", "img/bg2.jpg"]; //and so on...
function backgroundSlide(i) {
    $("#header").css("background-image", "url("+bgArr[i++]+")");
    if (i == bgArr.length) i = 0;
    var st = setTimeout(arguments.callee(i), 1000);
}
backgroundSlide(0)

Это будет просто цикл и цикл ...

0 голосов
/ 30 августа 2013

Это может вам помочь - https://github.com/im4aLL/bose

$("#header").bose({
    images : [ "imagePath_1", "imagePath_2", "imagePath_3"]
});

Но только затухание перехода. Удачи!

0 голосов
/ 07 апреля 2013

Пару дней до того, как я искал подобное объяснение. Ответ номер два был довольно хорош, но, как я вижу, он нуждается в исчезновении. Я достиг этого (и больше). Вот код:

var bgArr = ['img1.png', 'img2.png', 'img3.png', 'img4.png']; 
var bgText = ['text1', 'text2', 'text3', 'text4']; 
var i=0;
var left = 0;

$(document).ready(function() {
    timer = setTimeout("changeBG()", 7000);

    $("#slider_left").on("click", function(){
        i = i-2;
        if(i<-1) i = bgArr.length-2;         
                left = 1;       
                clearTimeout(timer);        
                changeBG();     
        });     
        $("#slider_right").on("click", function(){      
                if(i>(bgArr.length-1)) i = 0;
        clearTimeout(timer);
        changeBG();
    });
});

function changeBG() {
    i++;
    if(i>(bgArr.length-1)) i = 0;
    $('#slider_up').stop().fadeIn(1000, function(){
        if(left == 1){
        var a = i+1;
        if(i == bgArr.length-1)
            a = 0;
        }else{
        var a = i-1;
        if(i == 0)
            a = bgArr.length-1;
        }
        left = 0;

        $("#slider_up").css("background", "url("+bgArr[a]+") no-repeat center center white");
        $("#slider_up").css('opacity',0).show().animate({opacity:1});
        $("#slider_down").css("background", "url("+bgArr[i]+") no-repeat center center white");
        $("#slider_up").css('opacity',1).show().animate({opacity:0});
        $(".text_holder").fadeOut(1000, function() {
        $(this).html(bgText[i]);
        $(this).fadeIn(500);
        });
    });
    timer = setTimeout("changeBG()", 7000);
};

Я объяснил это в своем блоге: http://blog.braovic.com/css-background-slider-and-slideshow/

Надеюсь, это поможет вам всем. Лучший, Анте.

0 голосов
/ 22 сентября 2009

Вы можете использовать следующее для изменения фонового изображения:

$("#mydiv").css("background-image", "url(1.jpg)");

Чтобы создать слайд-шоу, вызывайте его через регулярные промежутки времени, используя settimeout.

...