我有 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>
最佳答案
当涉及到 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/