I am attempting to build an image carousel. However, I am running into an unexpected behavior with the opacity animation/transition.
I have an .active class that is successfully transitioning between the three img. This .active class adds opacity: 1;. However, as the last img loads into the DOM, it retains its initial opacity: 0;, and even though the .active class is added to each img every six seconds, the opacity doesn't change.
I imagine this might be a CSS issue, but I appreciate the help!
Javascript
const autoSlideshow = () => {
const slides = document.querySelectorAll('.slides img')
const slideDelay = 6000
let currentSlide = 0
slides[currentSlide].classList.add('.active')
const nextSlide = () => {
slides[currentSlide].classList.remove('.active')
currentSlide = (currentSlide + 1) % slides.length
slides[currentSlide].classList.add('.active')
}
setInterval(nextSlide, slideDelay)
}
autoSlideshow()
CSS
.slides img.active {
opacity: 1;
transition: opacity 2s ease-in-out;
}
.slides img {
position: inherit;
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0;
}
HTML
<div class="slides">
<img src="img/ac62.jpg" alt="couple 1">
<img src="img/b348.jpg" alt="couple 2">
<img src="img/bk40.jpg" alt="couple 3">
</div>