发布网友 发布时间:2022-05-05 20:54
共2个回答
懂视网 时间:2022-04-24 03:11
stop(true,true):表示停止匹配元素正在进行的动画并跳转到末状态,清空未执行完的动画队列。常用于”解决光标移入移出得过快导致的动画效果与光标动作不一致“问题!
jQuery stop() 方法
jQuery stop() 方法用于停止动画或效果,在它们完成之前。
stop() 方法适用于所有 jQuery 效果函数,包括滑动、淡入淡出和自定义动画。
语法
$(selector).stop(stopAll,goToEnd);可选的 stopAll 参数规定是否应该清除动画队列。默认是 false,即仅停止活动的动画,允许任何排入队列的动画向后执行。
可选的 goToEnd 参数规定是否立即完成当前动画。默认是 false。
因此,默认地,stop() 会清除在被选元素上指定的当前动画。
下面的例子演示 stop() 方法,不带参数:
$("#stop").click(function(){ $("#panel").stop(); });
:is(":animated") :animated是jQ选择器 选择所有动画元素
判断元素是否处于动画状态,常用于”连续点击上/下一张按钮,只响应用户第一次点击动作“时使用。
if(!$("#lunbolist li").is(":animated")){ $("#lunbolist li").filter(".on").hide(); $("#lunbolist li").eq(currentindex).fadeIn(100).addClass("on").siblings().removeClass("on"); $(this).addClass("on").siblings().removeClass("on"); }
热心网友 时间:2022-04-24 00:19
首先 这不是bug 而是俩种不同动画
用 0 的时候 元素就在-40 - 0之间来回移动 因为完成一次动画是需要时间的,margin-top会慢慢改变,如果一个动作还没完成就有下一个动作产生,因为用了stop(),之前动作立马停止,可能刚刚的动作完成了一半 从0运动到-20,那么现在就是从-20运动到0;
如果是用"+=40px",那么运动到一半产生的新动作就是0到-20;再从-20运动到+20;那就会往下走,你鼠标来回移动的越多,它的轨迹就越飘忽不定
俩者产生差距的根源在于用了stop(),你如果把stop()去掉,俩个就会表现出一致的动画效果