본문 바로가기
내마음대로만들어보자/JS

stop() / delay() 메서드

by 소농민! 2021. 8. 25.
728x90

stop() 메서드는 요소에 적용한 애니메이션을 정지시킨다.

delay() 메서드는 요소에 적용한 애니메이션을 지정한 시간만큼 지연시킨다. 

 

* stop() 기본형

1) $("요소 선택").stop( );
2) $("요소 선택").stop(clearQueue, finish);

1) 진행중인 첫번째 애니메이션만 정지시킨다. 큐에 대기중인 애니메이션은 계속해서 실행한다.

2) clearQueue, finish는 true나 false의 값을 입력할 수 있다. 기본값은 false , clearQueue가 true면 큐에서 대기중인 애니메이션을 모두 제거한다. finish가 true면 진행중인 애니메이션을 강제로 종료시킨다. 

 

① 진행중인 애니메이션만 정지 시키는 경우

$(".txt1").animate({opacity:0.5}, 1000)

.animate({marginLeft:"500px"},1000);

$(".txt1").stop();

 

② 대기 중인 애니메이션은 제거하고 진행 중인 애니메이션은 강제로 종료하는 경우

$(".txt1").animate({opacity:0.5}, 1000)

.animate({marginLeft:"500px"},1000);

$("txt1").stop(true, true);

 

정리하자면 stop() 메서드는

 

stop()은 현재 진행중인 애니메이션만 정지시키고 , 저장소에 대기중인 애니메이션부터 다시 실행시킨다.

stop(true, true)은 저장소에 대기중인 애니메이션을 제거하고, 현재 진행중인 애니메이션도 종료 시점으로 이동한다. 

 

* delay() 기본형

 

$("요소 선택").delay(지연시간).애니메이션 효과 메서드();

예를들어, 

$(".txt1").delay(3000).animate({marginLeft:"500px"}, 1000);   // 3초후에 애니메이션이 적용된다.

 

* 예제

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title> 효과와 애니메이션 </title>  
<script src="js/jquery.js"></script>
<script>
$(function(){
$(".txt1")
.animate({marginLeft:"300px"},1000);

$(".txt2").delay(3000)    //3초후에 애니메이션이 적용된다. 
.animate({marginLeft:"300px"},1000);

$(".btn1").on("click", moveElement);

function moveElement( ) {
$(".txt3")                     
.animate({marginLeft:"+=50px"},800); //[버튼1]을 누를 때 마다 class값이 "txt3"인 요소가 0.8초 동안 50px씩 이동한다. 

$(".txt4")
.animate({marginLeft:"+=50px"},800);
$(".txt4").stop()                        //stop()이 실행되면 [버튼1]을 눌러도 애니메이션이 동작하지 않는다. 

$(".txt5")
.animate({marginLeft:"+=50px"},800);
$(".txt5").stop(true, true)     //stop(true, true)가 실행되면 [버튼1]을 눌러도 애니메이션이 바로 종료시점으로 이동하고 애니메이션없이 css() 메서드를 적용한것처럼 50px씩 이동한다 
}
});
</script>
<style>
p{width: 110px;text-align: center;}
.txt1{background-color: aqua;}
.txt2{background-color: pink;}
.txt3{background-color: orange;}
.txt4{background-color: green;}
.txt5{background-color: gold;}
</style>
</head>
<body>
<p class="txt1">효과1</p>
<p class="txt2">효과2<br> delay(3000)</p>

<p><button class="btn1">50px 전진</button></p>
<p class="txt3">효과3</p>
<p class="txt4">효과4<br>stop( )</p>
<p class="txt5">효과5<br>stop(true, true)</p>
</body>
</html>

'내마음대로만들어보자 > JS' 카테고리의 다른 글

clearQueue() 메서드  (0) 2021.08.25
queue() / dequeue() 메서드  (0) 2021.08.25
animate() 메서드  (0) 2021.08.25
fadeTo() 메서드  (0) 2021.08.25
효과 및 애니메이션 메서드  (0) 2021.08.25