代码之家  ›  专栏  ›  技术社区  ›  xaddict

如何在mouseover和mouseout上使用Jquery制作相对动画?

  •  1
  • xaddict  · 技术社区  · 14 年前

    我正在努力做到以下几点:

    在我的页面底部有一个固定的div。当鼠标进出时,div将其高度设置为resp。100像素和50像素。默认高度为50px。

    我发现Jquery只使用一个大的no-no就可以正确地执行此操作。当鼠标在设置动画时退出,然后再次进入时:

    a) 堆叠动画导致很多(比如说100)动画正在做,而只有一个是必要的。

    b) 重置当前动画,这会导致意外行为,如div消失,更改为固定高度,锁定或在100到50像素之间上下闪烁。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Hugo Migneron    14 年前

    处理mouseover和mouseout事件时,应该使用 stop() 函数清除动画队列。如果需要,它将允许您跳到动画的结尾(在开始另一个动画之前)。您还可以清除整个动画队列。

    当我们需要在mouseenter和mouseleave上设置元素的动画时,.stop()方法的用处显而易见:

    <div id="hoverme">
      Hover me
      <img id="hoverme" src="book.png" alt="" width="100" height="123" />
    </div>
    

    我们可以创建一个很好的淡入淡出效果没有共同的问题,多次 .stop(true,true)到链:

    $('#hoverme-stop-2').hover(function() {
      $(this).find('img').stop(true, true).fadeOut();
    }, function() {
      $(this).find('img').stop(true, true).fadeIn();
    });
    
        2
  •  0
  •   Jeriko    14 年前

    与其在每个动作上触发一个动画事件,不如让一个函数不断地轮询特定的变量,并相应地采取行动——通过移动或不移动某个(变量)量。你的 mouseover mouseout

        3
  •  0
  •   xaddict    14 年前

    到目前为止,我找到的唯一可行的解决方案是在设置动画之前给mouseenter和mouseexit动画一个ClearQueue(),但我认为在某些情况下这可能是不需要的。

    在使用animate()的情况下,这可以很好地工作,但是对于slideUp和其他默认JQuery动画,它会导致不正确的行为。