2015-02-01 2 views
0

У меня есть следующий код:Jquery Fade в Fade из

Код:

$(document).ready(function(){ 
var header = $('body'); 

var backgrounds = new Array(
'url(/1.jpg)' 
, 'url(/2.jpg)' 
, 'url(/1.jpg)' 

); 

var current = 0; 

function nextBackground() { 
current++; 
current = current % backgrounds.length; 
header.css('background-image', backgrounds[current]); 
} 
setInterval(nextBackground, 5000); 

header.css('background-image', backgrounds[0]); 
}); 

Что я могу добавить к вышеуказанному коду так есть «гладкий» переход между фоновыми изображениями. Я предпочитаю не использовать плагин.

СПАСИБО :)

ответ

1

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

$(document).ready(function(){ 
 
    var image = $('.wrap'); 
 
    var fader = $('.fader'); 
 

 
    var backgrounds = new Array(
 
    'url(http://placehold.it/480&text=Slide+1)' 
 
    ,'url(http://placehold.it/480&text=Slide+2)' 
 
    ,'url(http://placehold.it/480&text=Slide+3)' 
 
); 
 

 
    var current = 0; 
 
    function nextBackground() { 
 
    // Change the background image while 
 
    // creating a duplicate of image and 
 
    // fade it out 
 
    fader.css('background-image', backgrounds[current]).fadeOut(function() { 
 
     fader.css('background-image', '').show(); 
 
    }); 
 
    
 
    current++; 
 
    current = current % backgrounds.length; 
 
    
 
    image.css('background-image', backgrounds[current]); 
 
    } 
 
    setInterval(nextBackground, 2000); 
 

 
    image.css('background-image', backgrounds[0]); 
 
});
.wrap, .fader { 
 
    position: absolute; 
 
    top: 0; 
 
    right: 0; 
 
    bottom: 0; 
 
    left: 0; 
 
    background-size: contain; 
 
    background-repeat: no-repeat; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="wrap"> 
 
    <div class="fader"></div> 
 
</div>

+0

O.k ЭТО РАБОТАЕТ! Я получил ту же проблему, что и мой контент, также исчезает, поэтому я добавил z-index: -1 в .wrap, .fader – Rdg

2

Вы можете приглушить его, изменить цвет фона и исчезать его обратно в:

function nextBackground() { 
    current++; 
    current = current % backgrounds.length; 
    header.fadeOut(200, function(){ 
    header.css('background-image', backgrounds[current]); 
    header.fadeIn(200); 
    }) 
} 
+0

Благодаря @Shomz, работает, однако я сдвинув свои фоновые изображения, и что я получаю, что фоновые изображения переворачивать и содержание является тот, который исчезает в и: S – Rdg

+0

Простите, не поймал ваш заголовок, на самом деле это тело. Вероятно, вы должны использовать отдельный элемент, который на 100% широкий и высокий для фона. – Shomz

+0

Да, сделал это Шомз. Спасибо за помощь :) – Rdg