Вы можете изменить обратный вызов setInterval
- это будет fadeOut
текущий слайд, затем изменить его содержимое и fadeIn
.
setInterval(function(){
$('.slides').fadeOut("slow", function(){
changeImage()
$('.slides').fadeIn("slow");
})
}, time);
Демо:
$(function() {
//Current slide
let i = 0;
//Slides Objects
let slide = {
//Init slide
init: function(image, title, description) {
this.image = image;
this.title = title;
this.description = description;
},
//Return image source
origin: function() {
let source = this.image;
return source;
},
//Return image title
showTitle: function() {
let headTitle = this.title;
return headTitle;
},
//Return image description
showDesc: function() {
let descriptionContent = this.description;
return descriptionContent;
}
};
// Time Between Switch
let time = 5000;
// Slides creation
let slide1 = Object.create(slide);
slide1.init("image-slider-1.jpg", "Première slide", "Description 1");
let slide2 = Object.create(slide);
slide2.init("image-slider-2.jpg", "Deuxième slide", "Description 2");
let slide3 = Object.create(slide);
slide3.init("image-slider-3.jpg", "Troisième slide", "Description 3");
let slide4 = Object.create(slide);
slide4.init("image-slider-4.jpg", "Quatrième slide", "Description 4");
//Adding slides to Array
let slides = [];
slides.push(slide1);
slides.push(slide2);
slides.push(slide3);
slides.push(slide4);
changeImage();
$('.slides').fadeIn("slow");
let animateSlides = startAnimatingSlides(time)
$('.slides').on('mouseout', function() {
animateSlides = startAnimatingSlides(time);
});
$('.slides').on('mouseover', function() {
clearInterval(animateSlides);
})
function startAnimatingSlides(interval) {
return setInterval(function() {
$('.slides').fadeOut("slow", function() {
changeImage()
$('.slides').fadeIn("slow");
})
}, interval);
}
function changeImage() {
$('#slideImage').attr('src', slides[i].origin());
$('#slideTitle').text(slides[i].showTitle());
$('#slideDesc').text(slides[i].showDesc());
//If current image number is not the last, pass to the next
if (i < (slides.length - 1)) {
i++;
//Else, go to the beginning of the slider
} else {
i = 0;
}
}
});
.slides {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="page">
<section class="slider">
<div class="slides">
<img id="slideImage" src="" alt="">
<div class="content">
<h2 id="slideTitle"></h2>
<p id="slideDesc"></p>
</div>
</div>
</section>
<section class="bike-booking container">
</section>
</div>
PS.Я исправил перезапуск слайд-шоу на mouseover
- вам нужно снова вызвать setInterval
, animateSlides
- просто дескриптор, чтобы очистить этот интервал.