javascript - jQuery 动画意外滞后

标签 javascript jquery animation

我正在尝试使用 jQuery 创建“悬停”效果。 它工作正常,除了只有在第一次调用完整回调时才会出现奇怪的滞后 - 我注意到这是 唯一 它实际到达它应该的确切位置的时间(其余的少了 ~1px,但那是很好),在那里停留一会儿,然后继续动画,从那时起它就可以顺利工作了。

我用我的代码创建了一个 jsFiddle here这是我编写的代码。

function hover(el, speed, start, stop) {
    if (el.is(':visible')) {
        el.animate({
            'top': stop + 'px'
        }, speed, function () {
            el.animate({
                'top': start + 'px'
            }, speed, hover(el, speed, start, stop));
        });
    }
}

$("div > div").fadeIn(1000, function () {
    hover($(this), 1000, 192, 210);
});

我是否遗漏了一些明显的东西?这是一个错误吗?我在滥用什么东西吗?

感谢任何帮助,谢谢!

最佳答案

延迟是因为在 hover() 函数的第二次调用中你的元素已经在顶部:210px 所以它只是等待 1sec 没有,要解决这个问题只需切换函数中的开始和停止点

function hover(el, speed, start, stop) {
    if (el.is(':visible')) {
        el.animate({
            'top': start + 'px'
        }, speed, function () {
            el.animate({
                'top': stop + 'px'
            }, speed, hover(el, speed, start, stop));
        });
    }
}

所以延迟会在一开始就不会被注意到

编辑

一个解决方法是在第一时间给它一脚:

var firstTime = true ; //this is global
function hover(el, speed, start, stop) {
    if (el.is(':visible')) {
        el.animate({
            'top': start + 'px'
        }, speed, function () {
            if(firstTime){
            el.animate({'top' : stop +"px" } , speed , function(){
                //something here 
            });
            firstTime = false; 
        }
        el.animate({
                'top': stop + 'px'
            }, speed, hover(el, speed, start , stop));
        });
    }
}

关于javascript - jQuery 动画意外滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22996422/

相关文章:

javascript - 如何通过滑动范围 slider 来改变图像?

javascript - 如何使用javascript查找 anchor 标记下的图像

javascript - 当图像只应出现在悬停时,文本出现在图像上

python - 在 Kivy 中使物体旋转并朝着触摸方向移动

javascript - 不能使用字母 x 开始 Angular 中的 html 属性

javascript - javascript中无法访问对象变量

javascript - 在水平点击 div 时切换 div

php - Jquery Nestable 输出到 mysql 数据库

ios - strokeEnd 上的 CABasicAnimation

javascript - 获取原始背景图像 - JQuery