jquery 在鼠标移开时停止无限动画

标签 jquery

我有 4 个 div,它们会根据另一个 div 的鼠标悬停而无限期地淡入,这一切都很好。不过,我希望动画在鼠标移出时停止,但这似乎不起作用。

$("#live").mouseover(function() {
  fadeloop('#live-step1', 100, 200, true);
  fadeloop('#live-step2', 100, 200, true)
  fadeloop('#live-step3', 100, 200, true);
  fadeloop('#live-step4', 100, 200, true);
});

$("#liveMusic").mouseout(function() {
  fadeloop('#live-step1', 100, 200, false);
  fadeloop('#live-step2', 100, 200, false);
  fadeloop('#live-step3', 100, 200, false);
  fadeloop('#live-step4', 100, 200, false);
});

function fadeloop(el, timeout, timein, loop) {
  var $el = $(el),
    intId, fn = function() {
      $el.fadeOut(timeout).fadeIn(timein);
    };
  fn();
  if (loop) {
    intId = setInterval(fn, timeout + timein + 100);
    return intId;
  } else {
    clearInterval(intId);
  }
  return false;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div style="height:550px;width:550px;">
  <div id="live" style="width:50px;height:50px;;background-color:gray">hover</div>
  <div id="live-step1" style="width:50px;height:50px;background-color:#ffffff">step1</div>
  <div id="live-step2" style="width:50px;height:50px;background-color:#ffffff">step2</div>
  <div id="live-step3" style="width:50px;height:50px;background-color:#ffffff">step2</div>
  <div id="live-step4" style="width:50px;height:50px;background-color:#ffffff">step4</div>
</div>

https://jsfiddle.net/uosww7bm/2/

最佳答案

当涉及到 UI 时,尽可能使用 CSS 更为可取。因此,您可以使用关键帧动画和 :hover 伪选择器来实现此目的。默认情况下,这会为您提供“鼠标移开时暂停”行为。

另请注意,您应该删除内联样式并将它们放置在外部样式表中,如下所示:

@keyframes fadeAnimation {
  0%   { opacity:1; }
  50%  { opacity:0; }
  100% { opacity:1; }
}

body { background-color: #EEE; }

.container {
  height: 550px;
  width: 550px;
}

.container div {
  width: 50px;
  height: 50px;
  background-color: #FFF;
}

.container #live {
  background-color: gray;
}

.container #live:hover ~ div {
  animation: fadeAnimation .4s infinite;
}
<div class="container">
  <div id="live">hover</div>
  <div>step1</div>
  <div>step2</div>
  <div>step2</div>
  <div>step4</div>
</div>

关于jquery 在鼠标移开时停止无限动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46111569/

相关文章:

javascript - 如何用一个提交按钮一个接一个地发布ajax?

javascript - 计算html中pre元素的最大行数

javascript - 如何让 JQuery Mobile/JQuery UI 样式通过 mustache 模板进行

javascript - HTML 5 为什么溢出-y :scroll does not work?

javascript - 获取标签内的所有节点

javascript - 将 JPlayer 的播放列表与播放器分开以启用移动设备滚动

javascript - IE8 中 jQuery.fadeIn 的字体抗锯齿问题?

javascript - 知道为什么这段代码不起作用吗?正文 > *

javascript - jQuery .click 未被识别

jquery - Instagram 将幻灯片放映到网站中