首页 > 解决方案 > 为什么此幻灯片中图像的不透明度没有改变?(CSS,Javascipt)

问题描述

我正在尝试构建图像轮播。但是,我遇到了不透明动画/过渡的意外行为。

我有一.active堂课在三者之间成功过渡img。这个.active类增加了opacity: 1;. 然而,当最后一个img加载到 DOM 中时,它会保留它的初始值opacity: 0;,并且即使每六秒.active添加一个类,也不会改变。imgopacity

我想这可能是一个 CSS 问题,但我感谢您的帮助!

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>

标签: javascripthtmlcssslideshow

解决方案


解决方案

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()

替换.activeactive


推荐阅读