Используете fadeIn fadeOut для setTimeout?
Могу ли я использовать fadeIn или fadeOut для setTimeout? У меня есть 3 фоновых изображения в массиве, и я хочу постепенно выцветать каждое из них.
Это мой код, который работает нормально, я бы хотел, чтобы переход был медленным, а не супер быстрым, как сейчас.
$(function () {
var nextImage = $('.main-background');
var backgrounds = [
'url(<?= $image_url ?>/big-main-background-1.jpg)',
'url(<?= $image_url ?>/big-main-background-2.jpg)',
'url(<?= $image_url ?>/big-main-background-3.jpg)'];
var current = 0;
function nextBackground() {
nextImage.css(
'background',
backgrounds[current = ++current % backgrounds.length]);
setTimeout(nextBackground, 4000);
}
setTimeout(nextBackground, 4000);
nextImage.css('background', backgrounds[0]);
});
2 ответа
Пожалуйста, проверьте эту скрипку: https://jsfiddle.net/3xdzxpmh/1/
Вот другой подход, вы можете спросить, есть ли у вас какие-либо вопросы.
Просто замените стиль или контент на свой фон.
Если вы хотите применить это к своему контейнеру, вставьте следующую структуру в ваш основной контейнер и максимально увеличьте его ширину и высоту.
Вот структура:
<div class="container">
<div style="background:red"></div>
<div style="background:yellow"></div>
<div style="background:blue"></div>
</div>
Вот JS, который я изменил из вашего кода:
var current = 0;
$(function(){
var l = $(".container div").length;
change();
function change() {
current = ++current % l;
$(".container div").removeClass("show");
$(".container div:nth-child("+(current+1)+")").addClass("show");
setTimeout(change,2000);
}
});
А вот и CSS:
.container {
position:relative;
}
.container > div {
width:200px;
height:200px;
top:0;
left:0;
position:absolute;
opacity:0;
transition:1s all ease;
}
.container > div.show {
opacity:1;
}
В основном, класс CSS .show
утверждает, что элемент должен быть непрозрачным. .container div
устанавливает прозрачный стиль и имеет переход. когда .show
переключено, 2 <div>
исчезают вместе, создавая эффект.
Используйте функцию jQuery fadeIn (), вы можете указать продолжительность там.