繁体   English   中英

jQuery 无点击无限slideUp和slideDown

[英]jQuery infinite slideUp and slideDown without clicking

我在 h3 标签中有一个标题。 我的代码使用 slideUp 可以工作,但 slideDown 看起来很糟糕。 我希望 slideDown 动画像 slideUp 一样流畅。 基本上,从最后一个数组滑到第一个数组,然后循环继续(无限)。 这是我的代码:HTML:

<div class="services-slide-up">
    <h3 class="services-it-consulting">IT Consulting</h3>
    <h3 class="services-web-dev">Web Development</h3>
    <h3 class="services-mobile-app-dev">Mobile App Development</h3>
    <h3 class="services-ui-ux-design">UI/UX Design</h3>
    <h3 class="services-team-dev">Team Development</h3>
    <h3 class="services-software-testing">Software Testing</h3>
</div>

jQuery

$(document).ready(function() {
  var divs = [$(".services-it-consulting"), $(".services-web-dev"), $(".services-mobile-app-dev"), $(".services-ui-ux-design"), $(".services-team-dev"), $(".services-software-testing")]; 
  var i = 0;
  function animateDivs() {
    divs[i].slideDown(1000, function() {
      divs[i].slideUp(1000, function() {
        i++;
        if (i >= divs.length) {
          i = 0;
        }
        animateDivs();
      });
    });
  }
  animateDivs();
});

您有语义问题,我发现嵌套的向上/向下滑动事件非常混乱。 您可以做的是为每个事件设置一个 setTimeout 并将其乘以一个计数器。 此计数器对于 slideDown 事件也应该是一致的。 解决方案可能如下所示。

但是请注意 memory 分配问题,因为 setTimeout 会立即执行。 所以这将总共创建 8 个超时函数。 在这一点上没什么大不了的,但可能会成为一个问题,所以请注意这一点。

 let divs = [$(".services-it-consulting"), $(".services-web-dev"), $(".services-mobile-app-dev"), $(".services-ui-ux-design"), $(".services-team-dev")]; let counter = 0; for(let i = 0; i < divs.length; i++) { setTimeout(function(){ divs[i].slideUp('slow') }, 1000 * counter); counter++; } for(let j = divs.length-1; j >= 0; j--) { setTimeout(function(){ divs[j].slideDown('slow') }, 1000 * counter); counter++; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="services-slide-up"> <h3 class="services-it-consulting">IT Consulting</h3> <h3 class="services-web-dev">Web Development</h3> <h3 class="services-mobile-app-dev">Mobile App Development</h3> <h3 class="services-ui-ux-design">UI/UX Design</h3> <h3 class="services-team-dev">Team Development</h3> <h3 class="services-software-testing">Software Testing</h3> </div>

 loop(); function loop() { let divs = [$(".services-it-consulting"), $(".services-web-dev"), $(".services-mobile-app-dev"), $(".services-ui-ux-design"), $(".services-team-dev")]; let counter = 0; for(let i = 0; i < divs.length; i++) { setTimeout(function(){ divs[i].slideUp('slow') }, 1000 * counter); counter++; } var down=1; for(let j = divs.length-1; j > 0; j--) { setTimeout(function(){ divs[j].slideDown('slow'); down++; // base case if (down == divs.length) { loop(); } }, 1000 * counter); counter++; } }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="services-slide-up"> <h3 class="services-it-consulting">IT Consulting</h3> <h3 class="services-web-dev">Web Development</h3> <h3 class="services-mobile-app-dev">Mobile App Development</h3> <h3 class="services-ui-ux-design">UI/UX Design</h3> <h3 class="services-team-dev">Team Development</h3> <h3 class="services-software-testing">Software Testing</h3> </div>

我已经习惯了setTimeout向上滑动和自己滑动循环调用function.见代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM