【发布时间】:2020-12-28 16:13:26
【问题描述】:
我试图每隔几秒钟在循环上淡入图像,并希望在将鼠标悬停在 div 上时停止循环,并在从 div 悬停时再次启动循环。图像正在正确淡入,但是当我将鼠标悬停时 循环没有停止。请帮帮我。当鼠标悬停在选项 div 上时,它应该停止,当鼠标移出它时,它应该开始。
<div class="fadein">
<img
id="f1"
src="assets/img/main-banners/financial-planning.svg"
alt=""
/>
<img
id="f2"
style="display: none;"
src="assets/img/main-banners/retirement-planning.svg"
alt=""
/>
<img
id="f3"
style="display: none;"
src="assets/img/main-banners/tax-planning.svg"
alt=""
/>
<img
id="f4"
style="display: none;"
src="assets/img/main-banners/investment-planning.svg"
alt=""
/>
</div>
<ul class="fianance-options">
<li class="option option-1"></li>
<li class="option option-2"></li>
<li class="option option-3"></li>
<li class="option option-4"></li>
</ul>
var $next = 1; // fixed, please do not modfy;
var $current = 0; // fixed, please do not modfy;
var $interval = 4000; // You can set single picture show time;
var $fadeTime = 800; // You can set fadeing-transition time;
var $imgNum = 4; // How many pictures do you have
$(document).ready(function () {
$(".fadein").css("position", "relative");
$(".fadein img").css({
position: "absolute",
width: "100%",
height: "100vh",
left: "-10%",
top: "35px"
});
nextFadeIn();
});
function nextFadeIn() {
//make image fade in and fade out at one time, without splash vsual;
$(".fadein img")
.eq($current)
.delay($interval)
.fadeOut($fadeTime)
.end()
.eq($next)
.delay($interval)
.hide()
.fadeIn($fadeTime, nextFadeIn);
// if You have 5 images, then (eq) range is 0~4
// so we should reset to 0 when value > 4;
if ($next < $imgNum - 1) {
$next++;
} else {
$next = 0;
}
if ($current < $imgNum - 1) {
$current++;
} else {
$current = 0;
}
}
var myTimer = setInterval(nextFadeIn, 5000);
$(".option").mouseleave(function () {
myTimer = setInterval(nextFadeIn, 5000);
console.log("start");
});
$(".option").mouseenter(function () {
clearInterval(myTimer);
console.log("stop");
});
【问题讨论】:
-
你能分享一下
div或element有你写mouseenter和mouseleave事件的option类吗? -
嘿,我已经更新了有问题的代码。
标签: javascript jquery