javascript - 淡入淡出并在鼠标悬停时停止

标签 javascript jquery html css

我正在制作小动画,其中链接将具有淡入淡出效果,但会有一些延迟,但是当用户将鼠标移到链接上时,它应该停止并在鼠标移开后再次开始动画。

目前,当用户将鼠标悬停在链接 2 或更多链接上时,开始出现并最终停止。

https://jsfiddle.net/e1fye4uy/3/

function InOut(elem) {
elem.delay()
    .fadeIn(1000)
    .delay(10000)
    .fadeOut(1000,

function () {
    if (elem.next().length > 0) {
        InOut(elem.next());
    } else {
        InOut(elem.siblings(':first'));
    }

}).mouseover(function () {
    //$(this).stop(true, false);
   // $(this).clearQueue();
    elem.stop($(".newsFlash").children('li'), true, false);
}).mouseout(function () {
    if (elem.next().length > 0) {
        elem.clearQueue();
        // elem.finish();
        InOut($(this));
    }
});};$(function () {
$('#content li').hide();
InOut($('#content li:first'));

});

最佳答案

这是我的解决方案 https://jsfiddle.net/e1fye4uy/8/

var doAniamtion = false;
var lis = $("#content li");
var time;
function start(){
    time = setInterval(function(){ 
       next(); 
    }, 2000);
    console.log("start" + time);
}

function stop(){
    console.log("stop " + time)
    clearInterval(time);
}



function next(){
    var lisLength = $(lis).length;
    for(var i=0;i<lisLength;i++)
        if($(lis[i]).hasClass("current"))
        {
            fadOut(lis[i],function(){
                fadIn(((i+1) < lisLength) ? lis[i+1] : lis[0]);
            });
            return;
        }
}

function fadIn(obj, callback){
    $(obj).addClass("current");
    $(obj).animate({
        opacity:1
    },500,function(){

        callback && callback();
    });
}

function fadOut(obj, callback){
    $(obj).addClass("current");
    $(obj).animate({
        opacity:0
    },500,function(){
         $(obj).removeClass("current");
        callback && callback();
    });
}

start();

$("#content").mouseover(function(){
    stop();
});

$("#content").mouseout(function(){
    start();
});

所以,我决定使用动画而不是使用 fadeIn 和 fadeOut,setInterval (+info http://www.w3schools.com/jsref/met_win_setinterval.asp ) 和 li HTML 元素中的类“current”来知道 witch li 当前可见。

附言:

要更改 li 保持可见的时间,请更改 setInterval 时间。 为了使动画更快或更慢,在 fadIn 和 fadout 函数中改变动画的时间

对代码有任何疑问,请提问!

关于javascript - 淡入淡出并在鼠标悬停时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32220458/

相关文章:

javascript - 我的联系表的垃圾邮件预防

php - 如何检测浏览器/选项卡是否关闭

javascript - jquery中的filter()函数

html - 如何使用 CSS 在 Bootstrap 中更改某些样式

jquery - 我的 Bootstrap Scrollspy 有什么问题吗?

javascript - 如何通过 Javascript 在 Popover Content (Bootstrap) 中添加 Html 标签(如 <button>)

javascript - jQuery 在后台弹出窗口

即使您刷新页面,Javascript 也会继续运行

javascript - jquery 在复选框上触发更改事件

jquery - 如何在 asp.net 转发器中选择一个 div