jQuery로 애니메이션을 구현할 때 흔히 만나게 되는 문제가 하나 있습니다. 바로 애니메이션 큐(queue) 입니다.
예를들어, 네비게이션 메뉴에 마우스가 오면 애니메이션이 동작하게 코딩이 된 경우, 마우스를 여러번 움직였을 때, 이전 애니메이션이 멈추기 전까지 마지막 애니메이션이 동작하지 않는 현상이 바로 애니메이션 큐로 인해 발생하는 문제입니다. 이러한 문제가 일어나는 이유는 이벤트가 일어날 때마다 큐를 만들기 때문에 이들이 순차적으로 진행되면서 원하지 않는 효과가 나타납니다.
위의 경우 마우스를 여러번 위아래로 움직이면 움직인 횟수만큼 바 애니메이션이 반복되는 것을 볼 수 있습니다. 반면 아래의 경우 마우스를 올려놓은 바에서만 애니메이션이 동작합니다.
아래와 같이 기존 애니메이션을 중단하고 현재 애니메이션만 보여주기 원할 때는 jQuery가 제공하는 stop() 메서드 하나만 써도 한번에 해결됩니다.
$(".element").hover(function(){
$(this).stop().animate({width:"100px"}, 500);
}, function(){
$(this).stop().animate({width:"80px"}, 500);
});
.stop() 이 호출되면 현재 동작하고 있는 애니메이션은 즉지 동작이 중단 됩니다.
.stop()은 애니메이션에 대해서만 동작하기 때문에 다른 종류의 큐를 중단하고 싶다면, .clearQueue() 를 대신 사용해야 합니다.
'Javascript' 카테고리의 다른 글
jQuery bind(), unbind(), trigger() (0) | 2013.04.01 |
---|---|
jQuery DOM 탐색 Selector (0) | 2013.04.01 |
jQuery display 속성 여부에 따라 show, hide (0) | 2013.03.15 |
jQuery if문 요소(element)가 있는지 확인 하기 (0) | 2013.03.14 |
jQuery scrollTop() (0) | 2013.01.28 |
개의 댓글