[JS + jquery] μ• λ‹ˆλ©”μ΄μ…˜ 효과 μ œμ–΄ λ©”μ„œλ“œ (queue(), dequeue(), stop(), clearQueue(), finish(), delay() )

2021. 11. 1. 11:21ㆍHTML + CSS + JS/JS μžλ°”μŠ€ν¬λ¦½νŠΈ

728x90

1. μ• λ‹ˆλ©”μ΄μ…˜ 효과 μ œμ–΄ λ©”μ„œλ“œ 

μ• λ‹ˆλ©”μ΄μ…˜ 효과 μ œμ–΄ λ©”μ„œλ“œλž€ '효과' λ˜λŠ” 'μ• λ‹ˆλ©”μ΄μ…˜'이 적용된 μš”μ†Œμ˜ λ™μž‘μ„ μ œμ–΄ν•˜λŠ” λ©”μ„œλ“œμ΄λ‹€. 

μ• λ‹ˆλ©”μ΄μ…˜ λ©”μ„œλ“œλŠ” ν•¨μˆ˜κ°€ 적용된 μˆœμ„œλŒ€λ‘œ 큐(queue) λΌλŠ” μ €μž₯μ†Œμ— μ €μž₯λœλ‹€. 

 

- μ• λ‹ˆλ©”μ΄μ…˜ 효과 μ œμ–΄ λ©”μ„œλ“œ μ’…λ₯˜ 

stop() ν˜„μž¬ μ‹€ν–‰ 쀑인 효과λ₯Ό λͺ¨λ‘ μ •μ§€μ‹œν‚¨λ‹€. 

delay() μ§€μ •ν•œ μ‹œκ°„λ§ŒνΌ μ§€μ—°ν–ˆλ‹€κ°€ μ• λ‹ˆλ©”μ΄μ…˜μ„ μ§„ν–‰ν•œλ‹€. 

queue() 큐에 μ‚¬μš©μž μ •μ˜ ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ 큐에 λŒ€κΈ°μ€‘μΈ ν•¨μˆ˜λ₯Ό 배열에 λ‹΄μ•„ λ°˜ν™˜ν•œλ‹€. 

-> 그리고 queue() λ©”μ„œλ“œ μ΄ν›„μ˜ μ• λ‹ˆλ©”μ΄μ…˜ 효과 λ©”μ„œλ“œλŠ” λͺ¨λ‘ μ·¨μ†Œν•œλ‹€. 

clearQueue() νμ—μ„œ 처음으둜 μ§„ν–‰ν•˜κ³  μžˆλŠ” μ• λ‹ˆλ©”μ΄μ…˜λ§Œ μ œμ™Έν•˜κ³  λŒ€κΈ° 쀑인 μ• λ‹ˆλ©”μ΄μ…˜μ€ λͺ¨λ‘ μ œκ±°ν•œλ‹€. 

dequeue() queue()λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜λ©΄ λŒ€κΈ°ν•˜κ³  μžˆλŠ” μ• λ‹ˆλ©”μ΄μ…˜ λ©”μ„œλ“œλŠ” μ œκ±°λ˜λŠ”λ° dequeue() λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜λ©΄ λ©”μ„œλ“œκ°€ μ œκ±°λ˜λŠ” 것을 막을 수 μžˆλ‹€. 

finish() μ„ νƒν•œ μš”μ†Œμ˜ 진행 쀑인 μ• λ‹ˆλ©”μ΄μ…˜μ„ κ°•μ œλ‘œ μ™„λ£Œ μ‹œμ μœΌλ‘œ 보낸 ν›„ μ’…λ£Œν•œλ‹€. 

 

1️⃣ stop()/ delay() λ©”μ„œλ“œ

stop() λ©”μ„œλ“œλŠ” μš”μ†Œμ— μ μš©ν•œ μ• λ‹ˆλ©”μ΄μ…˜μ„ μ •μ§€μ‹œν‚€κ³ , delay() λ©”μ„œλ“œλŠ” μš”μ†Œμ— μ μš©ν•œ μ• λ‹ˆλ©”μ΄μ…˜μ„ μ§€μ •ν•œ μ‹œκ°„λ§ŒνΌ μ§€μ—°μ‹œν‚¨λ‹€. 

 

$("μš”μ†Œ 선택").stop();

-> 진행 쀑인 첫번째 μ• λ‹ˆλ©”μ΄μ…˜λ§Œ μ •μ§€μ‹œν‚¨λ‹€. 

$("μš”μ†Œ 선택").stop(clearQueue, finish);

-> clearQueue, finishλŠ” trueλ‚˜ false 둜 값을 μž…λ ₯ν•  수 μžˆλ‹€. 

clearQueueκ°€ trueλ©΄ νμ—μ„œ λŒ€κΈ°μ€‘μΈ μ• λ‹ˆλ©”μ΄μ…˜μ„ λͺ¨λ‘ μ œκ±°ν•˜κ³ , finishκ°€ true이면 진행쀑인 μ• λ‹ˆλ©”μ΄μ…˜μ„ κ°•μ œλ‘œ μ’…λ£Œν•œλ‹€. 

 

 

stop()은 ν˜„μž¬ 진행쀑인 μ• λ‹ˆλ©”μ΄μ…˜λ§Œ μ •μ§€μ‹œν‚¨λ‹€. 

stop(true, ture)λŠ” μ €μž₯μ†Œμ— λŒ€κΈ° 쀑인 μ• λ‹ˆλ©”μ΄μ…˜μ„ μ œκ±°ν•˜κ³ , ν˜„μž¬ 진행쀑인 μ• λ‹ˆλ©”μ΄μ…˜λ„ μ’…λ£Œλœ μ‹œμ μœΌλ‘œ μ΄λ™ν•œλ‹€. 

전체 κ²°κ³Ό 

 

 

2️⃣ queue() / dequeue() λ©”μ„œλ“œ 

queue() λ©”μ„œλ“œλŠ” 큐에 적용된 μ• λ‹ˆλ©”μ΄μ…˜ ν•¨μˆ˜λ₯Ό λ°˜ν™˜ν•˜κ±°λ‚˜ 큐에 μ§€μ •ν•œ ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•œλ‹€. 

μ΄λ•Œ queue() λ©”μ„œλ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ μ‹€ν–‰ μ΄ν›„μ˜ λͺ¨λ“  μ• λ‹ˆλ©”μ΄μ…˜μ΄ μ·¨μ†Œλœλ‹€.

μ΄λ•Œ μ·¨μ†Œλ˜μ§€ μ•Šκ²Œ μ—°κ²°ν•΄μ£ΌκΈ° μœ„ν•΄μ„œ dequeue() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ queue() λ©”μ„œλ“œ μ‹€ν–‰ 이후에 적용된 μ• λ‹ˆλ©”μ΄μ…˜ λ©”μ„œλ“œκ°€ μ·¨μ†Œλ˜μ§€ μ•Šκ²Œ μ—°κ²°ν•΄μ€€λ‹€. 

 

- 큐(Queue) 의 ν•¨μˆ˜ λ°˜ν™˜ 

$("μš”μ†Œ 선택").queue(); 

 

- 큐(Queue)에 ν•¨μˆ˜ μΆ”κ°€ 

$("μš”μ†Œ 선택").queue(function() {μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ;});

 

- dequeue() λ©”μ„œλ“œ 

$("μš”μ†Œ 선택").dequeue();

μ €κΈ°μ„œ dequeue()λ₯Ό μƒλž΅ν–ˆλ‹€λ©΄ queue() λ©”μ„œλ“œ μ‹€ν–‰ 이후에 적용된 μ• λ‹ˆλ©”μ΄μ…˜λ“€μ΄ λ™μž‘ν•˜μ§€ μ•Šμ•˜μ„ 것이닀. 

μ‹€ν–‰ 쀑 캑쳐 ν™”λ©΄

 

3️⃣ clearQueue() λ©”μ„œλ“œ 

clearQueue() λ©”μ„œλ“œλŠ” 진행 쀑인 μ• λ‹ˆλ©”μ΄μ…˜μ„ μ œμ™Έν•˜κ³  νμ—μ„œ λŒ€κΈ°ν•˜λŠ” λͺ¨λ“  μ• λ‹ˆλ©”μ΄μ…˜ ν•¨μˆ˜λ₯Ό μ œκ±°ν•œλ‹€. 

$("μš”μ†Œ 선택").clearQueue();

λ‚΄μš©2λŠ” clearQueueλ•Œλ¬Έμ— 진행쀑인 첫번째 μ• λ‹ˆλ©”μ΄μ…˜μ„ μ œμ™Έν•˜κ³  λ‚˜λ¨Έμ§€ ν•¨μˆ˜λ“€μ€ μ œκ±°λΌμ„œ 더이상 움직이지 μ•ŠλŠ”λ‹€.

 

 

* μ—°μŠ΅λ¬Έμ œ 

 

go 3번
backν•œλ²ˆ 

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title> νš¨κ³Όμ™€ μ• λ‹ˆλ©”μ΄μ…˜ </title>  
<script src="js/jquery.js"></script>
<script>
$(function() {
	var txt1 = $(".txt1");
	var count = 1;

	$(".btnWrap button").on("click", function() {
		if(!txt1.is(":animated")) {
			if($(this).hasClass("backBtn")) {
				count --; 
				if(count < 1) {
					count = 1;
					return fasle;
				}

				txt1.animate({marginLeft : "-=10%"}, 300);
			}else {
				count++;
				if(count > 10) {
					count = 10;
					return false;
				}

				txt1.animate({marginLeft : "+=10%"}, 300);
			}
		}
	});
});
</script>
<style>
	*{margin:0;padding:0;}
	body{padding:20px;}
	.btnWrap{margin-bottom: 10px;}
	.wrap{
		max-width:600px;
		border: 1px solid #000; 
	}
	.txt1{width:10%; text-align:center;
	background-color: aqua;}
</style>
</head>
<body>
	<p class="btnWrap">
		<button class="backBtn">Back</button>
		<button class="goBtn">Go</button>
	</p>
	<div class="wrap">
		<p class="txt1">λ‚΄μš©1</p>
	</div>
</body>
</html>

 

 

 

 

 

 

 

 

 

728x90