Я написал простой JavaScript-код для простого слайд-шоу HTML; изображения находятся в массиве и меняются каждые 5 секунд.Переходы слайдов CSS CSS
Я хочу на 4-й секунде текущего изображения, чтобы он перешел на 0 opacity
над 1 second
, что означает, что после того, как изображение перешло и больше не видно, следующий должен загрузить, чтобы создать более плавный переход между все изображения.
Мой код выглядит следующим образом.
CSS
#slider {
opacity: 1;
transition: opacity 1s;
border-radius: 10px;
box-shadow: -5px 7px 5px #888888;
width: 99vw;
height: 470px;
align: middle;
}
#slider.fadeOut {
opacity: 0;
}
HTML
<img id="slider" src="Images/image1">
JavaScript
var imgArray = [
'Images/image1.jpg',
'Images/image2.jpg',
'Images/image3.jpg',
'Images/image4.jpg',
'Images/image5.jpg',
'Images/image6.jpg',
'Images/image7.jpg',
'Images/image8.jpg'
],
curIndex = 0;
imgDuration = 5000;
function slideShow() {
document.getElementById('slider').className += "fadeOut";
setTimeout(function() {
document.getElementById('slider').src = imgArray[curIndex];
document.getElementById('slider').className = "";
},1000);
curIndex++;
if (curIndex == imgArray.length) {
curIndex = 0;
}
setTimeout(slideShow, imgDuration);
}
slideShow();
Проблема заключается в том, что переходы нервными так что изображение будет исчезать в течение 1 секунды, а затем то же самое изображение показывается, тогда следующее изображение загрузится без перехода.
Я уверен, что это простое исправление, которое я пропускаю.
ли изображения не загружены, когда они добавляются в массив, хотя, я ценю они физически не загружены на странице, но они все еще присутствуют? –
Нет, они не являются. Вам действительно нужно будет загрузить изображение. То, что у вас есть в вашем массиве, - это просто строки. –
Никогда не выполнялись обратные вызовы, которые быстро читались и задавались вопросом, легче ли это сделать, используя функцию для затухания изображения и другую функцию для сдвига его на один шаг и просто используя метод setTimeout для обоих? –