Javascript 为什么jQuery动画只运行一次

Javascript 为什么jQuery动画只运行一次,javascript,jquery,Javascript,Jquery,我可以让我的动画只完成一次,而无需重新加载页面 关于同一个问题也有类似的问题,但我似乎无法让它再次攻击穆塞纳。提前谢谢 $document.readyfunction{ $'root'.mouseenterfunction{ $this.animate{ ‘对’:‘200’ }; }; $'root'.mouseleave函数{ $this.animate{ ‘左’:‘200’ }; }; }; 根{ 高度:100px; 宽度:100px; 背景色:深蓝色; 位置:绝对位置; 保证金:自动;

我可以让我的动画只完成一次,而无需重新加载页面

关于同一个问题也有类似的问题,但我似乎无法让它再次攻击穆塞纳。提前谢谢

$document.readyfunction{ $'root'.mouseenterfunction{ $this.animate{ ‘对’:‘200’ }; }; $'root'.mouseleave函数{ $this.animate{ ‘左’:‘200’ }; }; }; 根{ 高度:100px; 宽度:100px; 背景色:深蓝色; 位置:绝对位置; 保证金:自动; 排名:0; 左:0; 底部:0; 右:0; }
您正在设置两个不同属性的动画,右侧和左侧。这些并不是它们行进的方向,它们表示它们与父容器左右两侧的偏移量

按照现在的方式,您正在应用这两个属性,而从不删除它们。如果您试图使元素像抽屉一样滑出,则只应设置left属性的动画,在mouseenter上将其添加200px,并在mouseleave中将left设置回0px。如果试图使元素看起来变大,则应设置“宽度”或“右侧”的动画,但在mouseleave上执行相同的重置过程

然而!一种更简单的方法来实现您想要的功能,只需使用纯CSS转换即可。这些将更加平滑地设置动画,通常是GPU加速的,具有不同的缓和曲线,并且将正确重置,即使在鼠标进入动画完成之前鼠标离开

.目标{ 填充:10px; 背景:矢车菊蓝; 宽度:50%; /*过渡完成了所有工作*/ 转换:转换500ms缓进缓出; } .目标:悬停{ /*使用变换可以更轻松地移动位置*/ 转换:translateX200px; }
将鼠标悬停在我上方您正在设置两个不同属性的动画,右侧和左侧。这些并不是它们行进的方向,它们表示它们与父容器左右两侧的偏移量

按照现在的方式,您正在应用这两个属性,而从不删除它们。如果您试图使元素像抽屉一样滑出,则只应设置left属性的动画,在mouseenter上将其添加200px,并在mouseleave中将left设置回0px。如果试图使元素看起来变大,则应设置“宽度”或“右侧”的动画,但在mouseleave上执行相同的重置过程

然而!一种更简单的方法来实现您想要的功能,只需使用纯CSS转换即可。这些将更加平滑地设置动画,通常是GPU加速的,具有不同的缓和曲线,并且将正确重置,即使在鼠标进入动画完成之前鼠标离开

.目标{ 填充:10px; 背景:矢车菊蓝; 宽度:50%; /*过渡完成了所有工作*/ 转换:转换500ms缓进缓出; } .目标:悬停{ /*使用变换可以更轻松地移动位置*/ 转换:translateX200px; } 将鼠标悬停在我上方,因为左右定位并不总是相互覆盖。您需要先删除一个,然后才能观察到另一个:

$('#root').mouseenter(function() {
    $(this).css( "left", "" );
    $(this).animate({
        'right': '200'
    });
});
$('#root').mouseleave(function() {
    $(this).css( "right", "" );
    $(this).animate({
        'left': '200'
    });
});
或者,如果您只想返回其原始位置,您可以将正确的值返回到0:

$('#root').mouseenter(function() {
    $(this).animate({
        'right': '200'
    });
});
$('#root').mouseleave(function() {
    $(this).animate({
        'right': '0'
    });
});
因为左右定位并不总是相互覆盖。您需要先删除一个,然后才能观察到另一个:

$('#root').mouseenter(function() {
    $(this).css( "left", "" );
    $(this).animate({
        'right': '200'
    });
});
$('#root').mouseleave(function() {
    $(this).css( "right", "" );
    $(this).animate({
        'left': '200'
    });
});
或者,如果您只想返回其原始位置,您可以将正确的值返回到0:

$('#root').mouseenter(function() {
    $(this).animate({
        'right': '200'
    });
});
$('#root').mouseleave(function() {
    $(this).animate({
        'right': '0'
    });
});
不使用“left”:“200”而使用“right”:“0”

我的练习页 根{ 高度:100px; 宽度:100px; 背景色:深蓝色; 位置:绝对位置; 保证金:自动; 排名:0; 左:0; 底部:0; 右:0; } $document.readyfunction{ $'root'.mouseenterfunction{ $'root'。设置动画{ ‘对’:‘200’ }; }; $'root'.mouseleave函数{ $'root'。设置动画{ “右”:“0” }; }; }; 不使用“left”:“200”而使用“right”:“0”

我的练习页 根{ 高度:100px; 宽度:100px; 背景色:深蓝色; 位置:绝对位置; 保证金:自动; 排名:0; 左:0; 底部:0; 右:0; } $document.readyfunction{ $'root'.mouseenterfunction{ $'root'。设置动画{ ‘对’:‘200’ }; }; $'root'.mouseleave函数{ $'root'。设置动画{ “右”:“0” }; }; };
因为循环完成后,需要从元素中删除right和left的值。这可以通过css转换轻松实现。你能解释一下你想要实现什么吗?您是否试图使其滑动或增长?因为循环完成后,需要从元素中删除right和left的值
特德。这可以通过css转换轻松实现。你能解释一下你想要实现什么吗?你是想让它滑动还是成长?它似乎在跟随光标,这真的是他想要的吗?它不是在跟随光标。OP希望它滑到鼠标上方的一侧,然后在离开时滑回原位。尝试将光标移动到屏幕的前半部分的同一行上,光标跟随光标。@11维它没有跟随光标,当光标在屏幕的前半部分水平移动时,净效果是根跟随光标。那对我来说似乎很烦人。好吧,它比JS的好,JS的光标被移走后仍然会移动。我认为光标移动事件不应该被正在移动的对象捕获。它应该是父母。或者其他任何不移动的东西。它似乎在跟随光标,这真的是他想要的吗?它没有跟随光标。OP希望它滑到鼠标上方的一侧,然后在离开时滑回原位。尝试将光标移动到屏幕的前半部分的同一行上,光标跟随光标。@11维它没有跟随光标,当光标在屏幕的前半部分水平移动时,净效果是根跟随光标。那对我来说似乎很烦人。好吧,它比JS的好,JS的光标被移走后仍然会移动。我认为光标移动事件不应该被正在移动的对象捕获。它应该是父母。或者其他任何不动的东西。这就是我要找的!太简单了。非常感谢。这就是我要找的!太简单了。非常感谢。