【问题标题】:JS Slider fade images instead of simple changeJS Slider 淡化图像而不是简单的改变
【发布时间】:2020-08-17 07:51:37
【问题描述】:

我有一个非常简单的图像滑块,因为我很难找到一个没有添加混乱的...这个响应灵敏且工作正常,由于图像需要一点时间来加载,但这并不是太重要。目前图像只是每次都切换,但是我试图让它们在图像之间淡化?如果有人有任何理想的帮助,请保持直截了当,因为我在这里不知所措,我主要使用基本的 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 的类(并将当前不透明度设置为 1)。 不透明度随 css 过渡而变化(在 javascript 中添加了淡入淡出类)。

    我已将图像设置为 javscript 中的数组(这是否适用于您的代码取决于您拥有多少图像,但我猜是因为这是一个简单的示例,您只使用了几个)。我使用了不同大小的占位符图片来演示。

    如您所见,javascript 非常简短;循环遍历数组并显示每个图像 3 秒。 (演示目的是 8 秒长!)

    希望你觉得这很有用。

    var myImages = [
        'https://cdn.pixabay.com/photo/2014/02/27/16/10/tree-276014_960_720.jpg',
        'https://cdn.pixabay.com/photo/2020/11/24/12/23/flowering-dogwood-5772385_960_720.jpg',
        'https://cdn.pixabay.com/photo/2016/12/16/15/25/christmas-1911637_960_720.jpg',
        'https://cdn.pixabay.com/photo/2014/12/21/07/49/fireworks-574739_960_720.jpg',
        'https://cdn.pixabay.com/photo/2015/09/09/16/05/forest-931706_960_720.jpg'
      ],
      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;
      width: 100%;
      height: auto;
    }
    
    #slider.fadeOut {
      opacity: 0;
    }
    &lt;img id="slider" src="http://placehold.it/200x200"&gt;

    【讨论】:

    • 顺便说一下,如果您的图像很大并且需要一段时间来加载,请记住压缩它们。像tinypng 这样的网站对于减小图像文件大小很有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 2013-01-21
    • 2014-07-18
    • 2014-03-13
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多