애니메이션 효과 제어 메서드 - delay / stop

imjingu·2023년 7월 30일
0

개발공부

목록 보기
236/481

애니메이션 효과 제어 메서드
delay() : 지정한 시간만큼 지연 했다가 애니메이션을 진행
stop() : 현재 실행중인 효과를 모두 정지

스택은 '먼저 들어간 것이 나중에 나오는 자료구조' 로써 초코볼이 담겨있는 통에 비유할 수 있다.
스택은 후입선출, 'LIFO(Last-in, First-out) 구조'의 자료규조이다
push : 초코볼 통에 초코볼을 넣는다
pop : 초코볼 통에서 초코볼을 꺼낸다
peek : 이번에 꺼낼 초코볼의 색이 무엇인지 통 안을 들여다 본다

스택과는 반대로 큐(Queue)는 뒤쪽으로 들어가서 앞쪽
먼저 들어간게 먼저 나옴

기본형
$('요소선택').stop(); // 진행중인 첫번쨰 애니메이션만 정지. 큐에 대기중인 애니메이션은 계속해서 진행.

$('요소 선택').stop(clearQueue, finish); // clearQueue, finish에 true나 false 값을 입력. 기본값은 fasle
clearQueue가 true면 큐에서 대기중인 애니메이션을 모두 제거
finish가 true면 진행 중인 애니메이션을 강제로 종료.
true true 대기중인 애니메이션 삭제 진행중인 애니메이션도 결과값만 보여줌

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <title>Document</title>
    <script>
        /*
        
        */

        $(function() {
        //    $('.txt1').animate({marginLeft: '300px'}, 1000); // 창을 열면 바로 marginLeft 애니메이션 실행
           $('.txt1').animate({marginLeft: '500px'}, 1000).animate({opacity: 0.5}, 1000);
           // 진행중인였던 첫번째 애니메이션 정지, 대기중인 투명해지는 애니메이션은 실행
           $('.txt1').stop();
           

           $('.txt2').animate({opacity: 0.5}, 1000).animate({marginLeft: '500px'}, 1000);
           $('.txt2').delay(3000).animate({marginLeft: '300px'}, 1000); // delay 로 3초동안 있다가 애니메이션 실행
           // true true - 대기중인 애니메이션을 정지하고 첫번재 애니메이션의 효과는 보여주지 않고 결과값만 보여줌
           $('.txt2').stop(true, true);

            // moveElement 함수 저장
           const moveElement = function() {
                $('.txt3').animate({marginLeft: '+=50px'}, 800);

                $('.txt4').animate({marginLeft: '+=50px'}, 800);
                $('.txt4').stop()

                // 애니메이션이 바로 종료 시점으로 이동
                // 애니이션 없이 css() 메서드를 적용한 것처럼 50px씩 이동
                $('.txt5').animate({marginLeft: '+=50px'}, 800);
                $('.txt5').stop(true, true)
           };
           // .btn1에 클릭하면 moveElement 발생하는 이벤트 저장
           $('.btn1').on('click', moveElement);
        });
    </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>

0개의 댓글