javascript - 创建淡出/淡入而不是显示无/阻止

标签 javascript jquery

我正在尝试使用 JS 使幻灯片淡入和淡出,而不是显示无/ block 。这是否需要使用 css 来完成,或者我可以只用 JS 来完成吗?谢谢

代码:

var slideIndex = 1;
showSlides(slideIndex);

function plusSlides(n) {
  showSlides(slideIndex += n);
}

function currentDot(n) {
  showSlides(slideIndex = n);
}

function showSlides(n) {
    console.log('SHOWSLIDES');
      var i;
      var slides = document.getElementsByClassName("mySlides");
      var dots = document.getElementsByClassName("nav-dot");
      if (n > slides.length) {slideIndex = 1}
      if (n < 1) {slideIndex = slides.length}
      for (i = 0; i < slides.length; i++) {
          slides[i].style.display = "none";
      }
      for (i = 0; i < dots.length; i++) {
          dots[i].className = dots[i].className.replace(" active", "");
      }
      slides[slideIndex-1].style.display = "block";
      dots[slideIndex-1].className += " active";
}

或者将其转换为 jquery 并使用 .fadeOut()/.fadeIn() 会更好

最佳答案

之前:稍微了解一下 jQuery 的源代码:

  1. .fadeIn()

http://james.padolsey.com/jquery/#v=1.11.2&fn=fadeIn

  • .animation()
  • http://james.padolsey.com/jquery/#v=1.11.2&fn=animate

    这是一种可行的方法:

    var fadeInBtn = document.getElementById('fadeIn');
    fadeInBtn.addEventListener('click', function() {
      var testString = document.getElementById('test');
      fadeIn(testString, 30);
    });
    
    var fadeOutBtn = document.getElementById('fadeOut');
    fadeOutBtn.addEventListener('click', function() {
      var testString = document.getElementById('test');
      fadeOut(testString, 60);
    });
    
    
    
    function fadeIn(element, speed) {
      var interval = setInterval(function () {
        
        var opacity = parseFloat(element.style.opacity);
        if(opacity >= 1.0) {
           clearInterval(interval);
        }
    
        element.style.opacity = opacity + 0.1;
      }, speed);
    };
    
    function fadeOut(element, speed) {
      var interval = setInterval(function () {
        
        var opacity = parseFloat(element.style.opacity);
        if(opacity <= 0) {
           clearInterval(interval);
        }
    
        element.style.opacity = opacity - 0.1;
      }, speed);
    }
    div {
      font-size: 300%;
    }
    <button id="fadeIn">Test .fadeIn()</button>
    <button id="fadeOut">Test .fadeOut()</button>
    <div id="test" style="opacity: 0">Example String</div>

    另一个解决方案是使用 CSS(3)。我在这里引用这个已经提出的问题:Using CSS for fade-in effect on page load

    关于javascript - 创建淡出/淡入而不是显示无/阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40177646/

    相关文章:

    javascript - 在 Javascript 中返回相反值

    javascript - 使 div 高度动态化,这样就不会与额外内容产生差距

    javascript - 导航栏顶部固定收缩,带有无重叠的旋转木马

    javascript - 如何下载客户端内容

    javascript - 以 php (json) 形式检索变量

    javascript - AngularJS 嵌套 ul 列表和 ng-repeat

    javascript - 在exceljs上提交错误

    javascript - 如何构建点击列表?MVC

    javascript - 我应该使用 JSON 还是 AJAX 作为响应数据?

    javascript - 如何找出为什么 Javascript 下载这么慢?