当前位置: 首页 > 知识库问答 >
问题:

使用循环使用jQuery动画单个列表项

田曜瑞
2023-03-14

我正在jQuery中尝试一个相当简单的动画,使每个列表项依次向左滑动,然后拖回到Z索引上。

我想用循环遍历子元素,但是for-loop函数在动画完成之前一直递增变量,并且它们都一起移动。

null

$(document).ready(function() {
  function slideLeft(cardVal) {
    console.log("sub" + cardVal);
    $(cardVal)
      .css('z-index', '100')
      .delay(1000)
      .animate({
        left: "-=450px"
      }, 3000)
      .delay(200)
      .css('z-index', "10")
  };
  
  for (var i = 1; i < 4; i++) {
    var cardVal = ".cards li:nth-child(" + i + ")";
    console.log("main" + cardVal);
    slideLeft(cardVal);
  }
});
.cards {
  position: absolute;
  border: 2px white solid;
  width: 70%;
  min-height: 50vh;
}

.cards li {
  position: absolute;
  left: 500px;
  width: 20%;
  height: 50%;
  background-color: aliceblue;
}

.card img {
  height: 100%;
  width: 100%;
  padding: auto;
}

.card:nth-child(1) {
  z-index: 30;
}

.card:nth-child(2) {
  z-index: 20;
}

.card:nth-child(3) {
  z-index: 10;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="cards">
  <li class="card">
    <img src="./images/Image1.png" alt="Slide1">
  </li>
  <li class="card">
    <img src="./images/Image2.png" alt="Slide2">
  </li>
  <li class="card">
    <img src="./images/Image3.png" alt="Slide3">
  </li>
</ul>

null

console.logs向我显示它正在正确地转到函数,但是它并没有等到它运行完毕才返回到调用函数并增加循环变量。

提前致谢

共有1个答案

萧永长
2023-03-14

这个问题是因为for循环会立即遍历每个元素并启动动画。

要解决这个问题,您可以循环遍历元素,并使用delay()根据它们在集合中的索引增加它们的开始时间。类似这样的事情:

null

jQuery($ => {
  $('.cards li').each((i, el) => {
    $(el).css('z-index', '100')
      .delay(3200 * i)
      .animate({
        left: "-=450px"
      }, 3000)
      .delay(200)
      .css('z-index', "10")
  });
});
.cards {
  position: absolute;
  border: 2px white solid;
  width: 70%;
  min-height: 50vh;
}

.cards li {
  position: absolute;
  left: 500px;
  width: 20%;
  height: 50%;
  background-color: aliceblue;
}

.card img {
  height: 100%;
  width: 100%;
  padding: auto;
}

.card:nth-child(1) {
  z-index: 30;
}

.card:nth-child(2) {
  z-index: 20;
}

.card:nth-child(3) {
  z-index: 10;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="cards">
  <li class="card">
    <img src="./images/Image1.png" alt="Slide1">
  </li>
  <li class="card">
    <img src="./images/Image2.png" alt="Slide2">
  </li>
  <li class="card">
    <img src="./images/Image3.png" alt="Slide3">
  </li>
</ul>
 类似资料:
  • 我正在从Sahni的“C语言数据结构基础”中学习数据结构。在使用动态数组的循环队列中,作者提到了以下几点, 假设capacity是循环队列的初始容量,我们必须首先使用realloc增加数组的大小,这将把最大容量元素复制到新的数组中。为了获得正确的循环队列配置,我们必须将右段中的元素(即元素a和B)滑动到数组的右端(参见图3.7.d)。数组加倍和向右滑动一起最多复制2*容量-2个元素。

  • 问题内容: 在c ++或c编程语言中,我们知道要使用gotoxy(x,y)来更改坐标,并且可以使用循环和睡眠来更改坐标并制作动画。像这样; 但是我的问题是在JAVAFX 2.0编程中如何?我正在使用netbeans 7.2。感谢您的帮助。 问题答案: 看一下使用时间轴动画。它是JavaFX中动画的关键组成部分, 用于确定动画的关键部分何时以及以什么顺序出现。 这是一个例子

  • 问题内容: 感谢Jake Vanderplas,我知道如何开始使用来编写动画情节。这是一个示例代码: 假设现在我想绘制大量的功能(在这里说四个),这些功能是在循环的帮助下定义的。我做了一些voodoo编程,试图了解如何模仿下面的逗号,这就是我所得到的(不必说它不起作用:)。 我的问题是: 我该如何运作?红利(可能是关联的):和之间有什么区别? 谢谢 问题答案: 在下面的解决方案中,我展示了一个更大

  • 本文向大家介绍使用js实现一个循环队列相关面试题,主要包含被问及使用js实现一个循环队列时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 我想创建一个循环/循环链接列表,其中列表的尾部将指向列表的头部。那么,在创建列表之后,是否可以使用和修改尾节点以使其具有循环/循环性?如果是这样,您能告诉我一些代码如何发生吗? 如果无法使用,应如何创建自己的循环/循环链表实现?您能否向我展示此实现的外观框架? 如果您需要更多详细信息,请让我知道,我将消除任何混乱。 问题答案:

  • 本文向大家介绍jquery中使用循环下拉菜单示例代码,包括了jquery中使用循环下拉菜单示例代码的使用技巧和注意事项,需要的朋友参考一下 这个下拉菜单式可以循环的使用jquery实现,很实用,喜欢的朋友可以参考下