JS滑块淡化图像而不是简单的改变。

问题描述 投票:1回答:1

我有一个非常简单的图像滑块,因为我努力寻找一个没有添加混乱... ... 这个是响应式的,而且效果还不错,因为图片的缘故,加载需要一点时间,但这不是太重要。目前,图像只是每次切换过来,然而我正试图让它们在图像之间淡化?如果有人能提供任何帮助,那将是最理想的,请保持相当直接的方式,因为我在我的头上,我的工作主要是基本的HTML和PHP。

这就是我所拥有的。

.slides {
  width: 100%;
}

.slides-hidden {
  display: none;
}
<script>
  addEventListener("load", () => { // "load" is safe but "DOMContentLoaded" starts earlier
    var index = 0;
    const slides = document.querySelectorAll(".slides");
    const classHide = "slides-hidden",
      count = slides.length;
    nextSlide();

    function nextSlide() {
      slides[(index++) % count].classList.add(classHide);
      slides[index % count].classList.remove(classHide);
      setTimeout(nextSlide, 8000);
    }
  });
</script>




<section>
  <img class="slides slides-hidden" src="indexslider/1.png" alt="1">
  <img class="slides slides-hidden" src="indexslider/2.png" alt="2">
  <img class="slides slides-hidden" src="indexslider/3.png" alt="3">
  <img class="slides slides-hidden" src="indexslider/4.png" alt="4">
  <img class="slides slides-hidden" src="indexslider/5.png" alt="5">
</section>
javascript html image slider fade
1个回答
0
投票

这个脚本和你目前的脚本没有大的区别,而且很简单。为了实现渐变,我添加了一个不透明度为0的类(并将当前不透明度设置为1)。不透明度会随着css的过渡而改变(在javascript中添加了淡入淡出类)。

我在javscript中把图片设置为一个数组(这对你的代码是否可行取决于你有多少图片,但我猜测,因为这是一个简单的例子,你只用了几个)。我使用了不同大小的占位图来演示。

正如你所看到的,javascript很短很简单;循环浏览数组并显示每张图片3秒。(为了演示的目的,8秒已经很长了!)

希望你觉得这很有用。

var myImages = [
    'http://placehold.it/300x200',
    'http://placehold.it/300x150',
    'http://placehold.it/400x250'
  ],
  curIndex = 0;
imgShow = 3000; /*yours is 8 secs, but for demo purposes, 3 secs is shorter!*/

function playSlides() {
  document.getElementById('slider').className += "fadeOut";
  setTimeout(function() {
    document.getElementById('slider').src = myImages[curIndex];
    document.getElementById('slider').className = "";
  }, 1000);
  curIndex++;
  if (curIndex == myImages.length) {
    curIndex = 0;
  }
  setTimeout(playSlides, imgShow);
}
playSlides();
#slider {
  opacity: 1;
  transition: opacity 1s;
}

#slider.fadeOut {
  opacity: 0;
}
<img id="slider" src="http://placehold.it/200x200">
© www.soinside.com 2019 - 2024. All rights reserved.