SlideShare a Scribd company logo
HACOSA jQuery STUDY
#7. 효과
소개
• Animate 메서드
  ‒ CSS 속성을 제어 할 수 있다
  ‒ scrollTop과 scrollLeft DOM 속성을 제어 할 수 있다.
  ‒ 종점 값을 위해 CSS 계측단위를 사용할 수 있다.
  ‒ 상태를 전환하기 위한 값으로 toggle을 사용 할 수 있다. (ex. Opacity:toggle)
  ‒ 애니메이션에 easing 메서드를 지정할 수 있다.
  ‒ 애니메이션의 모든 지점에서 콜백을 설정할 수 있다.
  ‒ 애니메이션을 큐에 넣거나 혹은 동시에 실행하도록 지정할 수 있다.
• 애니메이션 속성을 지정하는 경우에는 반드시 카멜 표기법을 사
 용해야 한다. 그렇지 않으면 애니메이션이 동작하지 않을 수 있
 다.
소개
• 미리 정의된 효과
  ‒ 토글 방식으로 요소를 보여주고 숨기기
  ‒ 크기 조절과 동시에 요소를 페이드 인/아웃하기
  ‒ 슬라이드 업 또는 슬라이드 다운 그리고 토글하기
  ‒ 페이드 인과 페이드 아웃 그리고 투명도 지정
• 애니메이션을 제어하는데 도움을 주는 여러가지 유틸리티 제공
  ‒ 요소가 현재 애니메이션되고 있는지 검사하는 :animate 셀럭터
  ‒ 전반적으로 모든 효과를 켜고 끄는 기능
  ‒ 미리 만들어 놓은 함수를 애니메이션 큐에 추가하는 기능
  ‒ 전체 애니메이션 큐를 변경하는 함수
• 애니메이션 속도
  ‒ Slow : 600ms / fast : 200ms
요소를 슬라이딩 및 페이딩하기
• 컨텐츠의 특정 영역을 눈에 보여지게 하거나 토글이 가능하게
만듦
 ‒ 단순 보여주기
   $(‘#animate’).click(function(){
       $(‘.box’).show();
   });

 ‒ 단순한 토글(보였다 안보였다 하게 만듦)
   $(‘#animate’).click(function(){
       $(‘.box’).toggle();
   });

 ‒ 슬라이드 토글 애니메이션
   $(‘#animate’).click(function(){
       $(‘.box’).slideToggle(‘slow’);
   });
요소를 슬라이딩 및 페이딩하기
‒ 페이드
 → 투명도와 관련된 토글함수는 없기 때문에 fadeIn과 fadeOut을 결합해서 사용
 $(‘#animate’).click(function(){
     var $box = $(“.box”);
     if($box.is(‘:visible’)){
         $box.fadeOut(‘slow’);
     }else{
         $box.fadeIn(‘slow’);
     }
 });
 →혹은 fadeTo 메서드를 사용하여 fade 토글 애니메이션을 만들어 사용
 $(‘#animate’).click(function(){
     $(‘.box’).fadeTo(‘slow’, ‘toggle’);
 });
 →그러나 animate 메서드를 사용하는 쪽이 읽기도 편하고 유지보수에 좋다.
 $(‘#animate’).click(function(){
     $(‘.box’).animate({opacity : ‘toggle’}, ‘slow’);
 });
요소를 슬라이딩 및 페이딩하기
‒ 혼합 (페이드 토글 + height 토글)
 → opacity에 더하여 height도 토글
  $(‘#animate’).click(function(){
      $(‘.box’).animate({
             opacity : ‘toggle’,
             height : ‘toggle’
         }, ‘slow’);
  });
위쪽으로 슬라이드하면서 요소를 보이게 하기
• 위쪽으로 슬라이드하면서 컨텐트 블록을 보여지도록
  ‒ 애니메이션을 적용할 요소를 하단 위치에 붙도록 절대위치 지정
  ‒ 요소의 높이를 기반으로 하여 토글
   $(‘#animate’).click(function(){
       var $box = $(“revealUp”);
       if($box.height() > 0){
           $box.animate({height : 0});
       }else{
           $box.animate({height : ‘100%’});
       }
   });


 ‒ slideToggle()을 사용하지 않는 이유 : 토글이 올바로 동작하기 위해서는 실
  제 높이를 어떻게든 알아낼 수 있어야 하기 때문. 높이가 0에서 시작하는
  요소의 경우 jQuery가 전체 높이가 얼마나 되는지 알 수 없기 때문

 ‒ 실제적용…. slideToggle() 잘 동작함 ;;;; 버전차이인가 …. ;;
  http://www.mulder21c.com/lab/jQuery/slideToggle.html
수평 아코디언 만들기
• jQuery UI 라이브러리는 훌륭한 수직 아코디언을 제공하나 수평
적으로 동작하는 아코디언을 만들기 위해서는 별도의 CSS 및
별개의 jQUery 코드를 사용해야 한다.
 ‒ Markup, CSS는 교재 p243, 244 참고
   $.fn.horizontalAccordion = function(speed){
      return this.each(function () {
         var $accordionHeaders = $(this).find(‘h3’),
         //$(this) => 아코디언 DIV, 아코디언의 요소 중 클릭 가능한 헤더를 수집
         $open = $accordionHeaders.next().filter(‘:first’),
         // 열어진 패널을 담고 있는 변수 설정
         width = $open.outerWidth();
         // 열어진 패널의 너비 알아내기

      // initailize the display 출력 초기화
      $accordionHeaders.next().filter(‘:not(:first)’).css({display : ‘none’, width : 0 });
      // 첫번째 패널이 아닌 것들을 모두 display : none 시키고, width : 0 로 설정
      $accordionHeaders.click(function(){
      // 헤더를 클릭했을 때 아코디언 효과 줄 이벤트 부여
수평 아코디언 만들기
                 if($open.prev().get(0) == this){
                     return;
                 }
                 // 선택된 헤더가 현재 열려있는 패널의 헤더와 같으면 동작 안 함
                 $open.animate({width : 0}, {duration : speed});
                 // 그 외 모든 패널을 다 speed 동안 width : 0 으로 애니메이트 시킴
                 $open = $(this).next().animate({width : width}, {duration : speed});
                 // 선택된 헤더의 패널을 speed 동안 width : width 로 애니메이트 시킴
           });
     });
 }

 $(‘#accordionWarpper’).horizontalAccordion(200);
동시에 요소를 슬라이딩하고 페이딩하기
• 동시에 높이와 투명도 모두를 토글하는 애니메이션 함수 만들기


  $(‘#animate’).click(function(){
      $(‘.box’).animate({opacity : ‘toggle’, height: ‘toggle’});
      return false;
  });
  →   앞서 7.1 “요소를 슬라이딩 및 페이딩하기” 마지막에 나온 것과 똑같은 거..
      우려먹기냐…….. -ㅅ-;;;
순차적인 효과 적용하기
• 어떤 효과 후에 다른 효과가 발생하기 원할 때…
  ‒ 수동 콜백
  → 순차적 효과를 적용하는 기본 방식은 callback 을 사용하는 것.
   특히 이어지는 효과가 이전 효과와 다를 경우에 사용
    var $boxes = $(‘.box’).hide();

    $(‘#animate’).click(function(){
        $boxes.eq(0).fadeIn(‘slow’, function(){
          $boxes.eq(1).slideDown(‘slow’);
        }
    });

    $(‘#animate’).click(function(){
        // .box 요소들을 hide() 시키고, 그 중 첫 번째 것을 fadein 시킴
        $(‘.box’).hide().eq(0).fadeIn(‘slow’, function(){
            // fadeIn 된 후 .box 요소들을 hide() 시키고 두 번째 것을 slideDown() 시킴
            $(‘.box’).hide().eq(1).slideDown(‘slow’);
        }
    });
순차적인 효과 적용하기
• 어떤 효과 후에 다른 효과가 발생하기 원할 때…
  ‒ 자동 순서
  → Dave Methvin의 해결 방법을 기반으로 수많은 요소에 대해 효과를 순차적으로
   반복
    var $boxes = $(‘.box’).hide();
    div = 0;

    $(‘#animate’).click(function(){
        $($boxes[div++] || []).fadeIn(‘slow’, arguments.callee);
    });
   • arguments.callee?
     - 현재 실행되고 있는 함수를 지칭, 즉 위 function 안에서
      $($boxes[div++] || []).fadeIn(‘slow’, arguments.callee);
      를 지칭하는 재귀함수 격이 됨
요소들이 현재 애니메이션 중인지 알아내기
• :animate 셀렉터 사용
 $(‘#animate’).click(function(){
    $(‘.box’).filter(‘:not(:animated)’)
           .animate({marginLeft : -10}, speed)
           .animate({marginLeft : 10}, speed)
           .animate({marginLeft : -10}, speed)
           .animate({marginLeft : 10}, speed)
           .animate({marginLeft : -10}, speed)
           .animate({marginLeft : 10}, speed)
           .animate({marginLeft : 0}, speed)
 }

 ‒ .box 요소가 애니메이션 중이 아닐 때만 실행 됨
애니메이션 종료 및 리셋하기
• stop() 메서드를 통해 애니메이션의 희름을 중간에 멈출 수 있다.

  $(‘#animate’).hover(function(){
         $(‘.box’).stop().fadeTo(200, 1);
     }, fucntion(){
         $(‘.box’).stop().fadeTo(200, 0);
 ‒});흠…. 솔직히 차이가 뭔지 모르겠다… ㅠ_ㅠ stop()을 없애도 아무 차이 안난다 ;;;
효과에 사용자 정의 이징(Easing)메서드 사용하기
• jQuery는 swing과 linear라는 두 개의 easing 함수를 내장하고
 있는데, 그 외 다른 이징 함수를 사용하고 싶을 때 easing 함수를
 수동으로 추가하지 않고, jquery.easing 플러그인을 사용하여 이
 미 정의된 컬렉션을 사용
 $(‘#animate’).click(function(){
     $(‘.box’).({scrollTop : ‘+=100’},
            {duration : 400, easing : ‘easeOutElastic’ });
 });
모든 효과를 동작하지 않게 하기
• 애니메이션 동작을 하지 않되 animate 메서드와 그 최종 값을
  지원
• $.fx.off = true; 를 설정함으로 애니메이션 동작을 않게 함
  $.fx.off = true;
  // 이후 모든 애니메이션은 동작하지 않음

  $(‘#animate’).click(function(){
      $(‘.box’).animate({width : ‘+=100’, height : ‘+=100’});
  });



• $.fx.off = false; 를 설정하면 다시 동작 가능
고급 효과를 위해 jQuery UI 사용하기
• 복잡한 효과를 만들거나 특별한 효과가 필요한 경우 jQuery UI
라이브러리를 사용
 $(‘#animate’).click(function(){
     $(‘.box’).toggleClass(‘big’, 2000);
 });

 $(‘#effect’).click(function(){
     $(‘.box’).effect(‘explode’), null, 2000);
 });

 ‒ Chrome 기준 실행 안됨 ;;; -ㅅ- ;;;;
END

More Related Content

Similar to Hacosa j query 7th

jQuery Trend
jQuery TrendjQuery Trend
jQuery Trend
Taegon Kim
 
Design patterns
Design patternsDesign patterns
Design patterns
용현 윤
 
Web Components 101 polymer & brick
Web Components 101 polymer & brickWeb Components 101 polymer & brick
Web Components 101 polymer & brickyongwoo Jeon
 
막하는 스터디 네 번째 만남 AngularJs (20151108)
막하는 스터디 네 번째 만남 AngularJs (20151108)막하는 스터디 네 번째 만남 AngularJs (20151108)
막하는 스터디 네 번째 만남 AngularJs (20151108)
연웅 조
 
Decentraland Software Development Kit(SDK) 2.0 버전
Decentraland Software Development Kit(SDK) 2.0 버전Decentraland Software Development Kit(SDK) 2.0 버전
Decentraland Software Development Kit(SDK) 2.0 버전
Jiseob Park
 
EcmaScript6(2015) Overview
EcmaScript6(2015) OverviewEcmaScript6(2015) Overview
EcmaScript6(2015) Overview
yongwoo Jeon
 
Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713
Yong Joon Moon
 
Kotlin with fp
Kotlin with fpKotlin with fp
Kotlin with fp
Myeongin Woo
 
처음배우는 자바스크립트, 제이쿼리 #3
처음배우는 자바스크립트, 제이쿼리 #3처음배우는 자바스크립트, 제이쿼리 #3
처음배우는 자바스크립트, 제이쿼리 #3
성일 한
 
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
창규 김
 
Game Design patterns, Visitor, State, FSM pattern
Game Design patterns, Visitor, State, FSM patternGame Design patterns, Visitor, State, FSM pattern
Game Design patterns, Visitor, State, FSM pattern
Young Ha Kim
 
Android UI Test (Espresso/Kakao)
Android UI Test (Espresso/Kakao)Android UI Test (Espresso/Kakao)
Android UI Test (Espresso/Kakao)
MDLicht
 
Hacosa j query 3th
Hacosa j query 3thHacosa j query 3th
Hacosa j query 3th
Seong Bong Ji
 
Nexacro
NexacroNexacro
Nexacro
HyungKuIm
 
Head first chapter 1
Head first chapter 1Head first chapter 1
Head first chapter 1
ukjinkwoun
 
Hacosa j query 4th
Hacosa j query 4thHacosa j query 4th
Hacosa j query 4th
Seong Bong Ji
 
HolubOnPatterns/chapter3_3
HolubOnPatterns/chapter3_3HolubOnPatterns/chapter3_3
HolubOnPatterns/chapter3_3suitzero
 
Design patterns
Design patternsDesign patterns
Design patternsdf
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수
NAVER D2
 
Hacosa js study 4주차
Hacosa js study 4주차Hacosa js study 4주차
Hacosa js study 4주차Seong Bong Ji
 

Similar to Hacosa j query 7th (20)

jQuery Trend
jQuery TrendjQuery Trend
jQuery Trend
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Web Components 101 polymer & brick
Web Components 101 polymer & brickWeb Components 101 polymer & brick
Web Components 101 polymer & brick
 
막하는 스터디 네 번째 만남 AngularJs (20151108)
막하는 스터디 네 번째 만남 AngularJs (20151108)막하는 스터디 네 번째 만남 AngularJs (20151108)
막하는 스터디 네 번째 만남 AngularJs (20151108)
 
Decentraland Software Development Kit(SDK) 2.0 버전
Decentraland Software Development Kit(SDK) 2.0 버전Decentraland Software Development Kit(SDK) 2.0 버전
Decentraland Software Development Kit(SDK) 2.0 버전
 
EcmaScript6(2015) Overview
EcmaScript6(2015) OverviewEcmaScript6(2015) Overview
EcmaScript6(2015) Overview
 
Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713
 
Kotlin with fp
Kotlin with fpKotlin with fp
Kotlin with fp
 
처음배우는 자바스크립트, 제이쿼리 #3
처음배우는 자바스크립트, 제이쿼리 #3처음배우는 자바스크립트, 제이쿼리 #3
처음배우는 자바스크립트, 제이쿼리 #3
 
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
 
Game Design patterns, Visitor, State, FSM pattern
Game Design patterns, Visitor, State, FSM patternGame Design patterns, Visitor, State, FSM pattern
Game Design patterns, Visitor, State, FSM pattern
 
Android UI Test (Espresso/Kakao)
Android UI Test (Espresso/Kakao)Android UI Test (Espresso/Kakao)
Android UI Test (Espresso/Kakao)
 
Hacosa j query 3th
Hacosa j query 3thHacosa j query 3th
Hacosa j query 3th
 
Nexacro
NexacroNexacro
Nexacro
 
Head first chapter 1
Head first chapter 1Head first chapter 1
Head first chapter 1
 
Hacosa j query 4th
Hacosa j query 4thHacosa j query 4th
Hacosa j query 4th
 
HolubOnPatterns/chapter3_3
HolubOnPatterns/chapter3_3HolubOnPatterns/chapter3_3
HolubOnPatterns/chapter3_3
 
Design patterns
Design patternsDesign patterns
Design patterns
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수
 
Hacosa js study 4주차
Hacosa js study 4주차Hacosa js study 4주차
Hacosa js study 4주차
 

More from Seong Bong Ji

Hacosa j query 2th
Hacosa j query 2thHacosa j query 2th
Hacosa j query 2th
Seong Bong Ji
 
Hacosa js study 8th
Hacosa js study 8thHacosa js study 8th
Hacosa js study 8th
Seong Bong Ji
 
Hacosa js study 7th
Hacosa js study 7thHacosa js study 7th
Hacosa js study 7th
Seong Bong Ji
 
Hacosa js study 6th
Hacosa js study 6thHacosa js study 6th
Hacosa js study 6th
Seong Bong Ji
 
Hacosa js study 5th
Hacosa js study 5thHacosa js study 5th
Hacosa js study 5th
Seong Bong Ji
 
Hacosa js study 2주차
Hacosa js study 2주차Hacosa js study 2주차
Hacosa js study 2주차
Seong Bong Ji
 
Hacosa js study 1주차
Hacosa js study 1주차Hacosa js study 1주차
Hacosa js study 1주차
Seong Bong Ji
 

More from Seong Bong Ji (7)

Hacosa j query 2th
Hacosa j query 2thHacosa j query 2th
Hacosa j query 2th
 
Hacosa js study 8th
Hacosa js study 8thHacosa js study 8th
Hacosa js study 8th
 
Hacosa js study 7th
Hacosa js study 7thHacosa js study 7th
Hacosa js study 7th
 
Hacosa js study 6th
Hacosa js study 6thHacosa js study 6th
Hacosa js study 6th
 
Hacosa js study 5th
Hacosa js study 5thHacosa js study 5th
Hacosa js study 5th
 
Hacosa js study 2주차
Hacosa js study 2주차Hacosa js study 2주차
Hacosa js study 2주차
 
Hacosa js study 1주차
Hacosa js study 1주차Hacosa js study 1주차
Hacosa js study 1주차
 

Hacosa j query 7th

  • 2. 소개 • Animate 메서드 ‒ CSS 속성을 제어 할 수 있다 ‒ scrollTop과 scrollLeft DOM 속성을 제어 할 수 있다. ‒ 종점 값을 위해 CSS 계측단위를 사용할 수 있다. ‒ 상태를 전환하기 위한 값으로 toggle을 사용 할 수 있다. (ex. Opacity:toggle) ‒ 애니메이션에 easing 메서드를 지정할 수 있다. ‒ 애니메이션의 모든 지점에서 콜백을 설정할 수 있다. ‒ 애니메이션을 큐에 넣거나 혹은 동시에 실행하도록 지정할 수 있다. • 애니메이션 속성을 지정하는 경우에는 반드시 카멜 표기법을 사 용해야 한다. 그렇지 않으면 애니메이션이 동작하지 않을 수 있 다.
  • 3. 소개 • 미리 정의된 효과 ‒ 토글 방식으로 요소를 보여주고 숨기기 ‒ 크기 조절과 동시에 요소를 페이드 인/아웃하기 ‒ 슬라이드 업 또는 슬라이드 다운 그리고 토글하기 ‒ 페이드 인과 페이드 아웃 그리고 투명도 지정 • 애니메이션을 제어하는데 도움을 주는 여러가지 유틸리티 제공 ‒ 요소가 현재 애니메이션되고 있는지 검사하는 :animate 셀럭터 ‒ 전반적으로 모든 효과를 켜고 끄는 기능 ‒ 미리 만들어 놓은 함수를 애니메이션 큐에 추가하는 기능 ‒ 전체 애니메이션 큐를 변경하는 함수 • 애니메이션 속도 ‒ Slow : 600ms / fast : 200ms
  • 4. 요소를 슬라이딩 및 페이딩하기 • 컨텐츠의 특정 영역을 눈에 보여지게 하거나 토글이 가능하게 만듦 ‒ 단순 보여주기 $(‘#animate’).click(function(){ $(‘.box’).show(); }); ‒ 단순한 토글(보였다 안보였다 하게 만듦) $(‘#animate’).click(function(){ $(‘.box’).toggle(); }); ‒ 슬라이드 토글 애니메이션 $(‘#animate’).click(function(){ $(‘.box’).slideToggle(‘slow’); });
  • 5. 요소를 슬라이딩 및 페이딩하기 ‒ 페이드 → 투명도와 관련된 토글함수는 없기 때문에 fadeIn과 fadeOut을 결합해서 사용 $(‘#animate’).click(function(){ var $box = $(“.box”); if($box.is(‘:visible’)){ $box.fadeOut(‘slow’); }else{ $box.fadeIn(‘slow’); } }); →혹은 fadeTo 메서드를 사용하여 fade 토글 애니메이션을 만들어 사용 $(‘#animate’).click(function(){ $(‘.box’).fadeTo(‘slow’, ‘toggle’); }); →그러나 animate 메서드를 사용하는 쪽이 읽기도 편하고 유지보수에 좋다. $(‘#animate’).click(function(){ $(‘.box’).animate({opacity : ‘toggle’}, ‘slow’); });
  • 6. 요소를 슬라이딩 및 페이딩하기 ‒ 혼합 (페이드 토글 + height 토글) → opacity에 더하여 height도 토글 $(‘#animate’).click(function(){ $(‘.box’).animate({ opacity : ‘toggle’, height : ‘toggle’ }, ‘slow’); });
  • 7. 위쪽으로 슬라이드하면서 요소를 보이게 하기 • 위쪽으로 슬라이드하면서 컨텐트 블록을 보여지도록 ‒ 애니메이션을 적용할 요소를 하단 위치에 붙도록 절대위치 지정 ‒ 요소의 높이를 기반으로 하여 토글 $(‘#animate’).click(function(){ var $box = $(“revealUp”); if($box.height() > 0){ $box.animate({height : 0}); }else{ $box.animate({height : ‘100%’}); } }); ‒ slideToggle()을 사용하지 않는 이유 : 토글이 올바로 동작하기 위해서는 실 제 높이를 어떻게든 알아낼 수 있어야 하기 때문. 높이가 0에서 시작하는 요소의 경우 jQuery가 전체 높이가 얼마나 되는지 알 수 없기 때문 ‒ 실제적용…. slideToggle() 잘 동작함 ;;;; 버전차이인가 …. ;; http://www.mulder21c.com/lab/jQuery/slideToggle.html
  • 8. 수평 아코디언 만들기 • jQuery UI 라이브러리는 훌륭한 수직 아코디언을 제공하나 수평 적으로 동작하는 아코디언을 만들기 위해서는 별도의 CSS 및 별개의 jQUery 코드를 사용해야 한다. ‒ Markup, CSS는 교재 p243, 244 참고 $.fn.horizontalAccordion = function(speed){ return this.each(function () { var $accordionHeaders = $(this).find(‘h3’), //$(this) => 아코디언 DIV, 아코디언의 요소 중 클릭 가능한 헤더를 수집 $open = $accordionHeaders.next().filter(‘:first’), // 열어진 패널을 담고 있는 변수 설정 width = $open.outerWidth(); // 열어진 패널의 너비 알아내기 // initailize the display 출력 초기화 $accordionHeaders.next().filter(‘:not(:first)’).css({display : ‘none’, width : 0 }); // 첫번째 패널이 아닌 것들을 모두 display : none 시키고, width : 0 로 설정 $accordionHeaders.click(function(){ // 헤더를 클릭했을 때 아코디언 효과 줄 이벤트 부여
  • 9. 수평 아코디언 만들기 if($open.prev().get(0) == this){ return; } // 선택된 헤더가 현재 열려있는 패널의 헤더와 같으면 동작 안 함 $open.animate({width : 0}, {duration : speed}); // 그 외 모든 패널을 다 speed 동안 width : 0 으로 애니메이트 시킴 $open = $(this).next().animate({width : width}, {duration : speed}); // 선택된 헤더의 패널을 speed 동안 width : width 로 애니메이트 시킴 }); }); } $(‘#accordionWarpper’).horizontalAccordion(200);
  • 10. 동시에 요소를 슬라이딩하고 페이딩하기 • 동시에 높이와 투명도 모두를 토글하는 애니메이션 함수 만들기 $(‘#animate’).click(function(){ $(‘.box’).animate({opacity : ‘toggle’, height: ‘toggle’}); return false; }); → 앞서 7.1 “요소를 슬라이딩 및 페이딩하기” 마지막에 나온 것과 똑같은 거.. 우려먹기냐…….. -ㅅ-;;;
  • 11. 순차적인 효과 적용하기 • 어떤 효과 후에 다른 효과가 발생하기 원할 때… ‒ 수동 콜백 → 순차적 효과를 적용하는 기본 방식은 callback 을 사용하는 것. 특히 이어지는 효과가 이전 효과와 다를 경우에 사용 var $boxes = $(‘.box’).hide(); $(‘#animate’).click(function(){ $boxes.eq(0).fadeIn(‘slow’, function(){ $boxes.eq(1).slideDown(‘slow’); } }); $(‘#animate’).click(function(){ // .box 요소들을 hide() 시키고, 그 중 첫 번째 것을 fadein 시킴 $(‘.box’).hide().eq(0).fadeIn(‘slow’, function(){ // fadeIn 된 후 .box 요소들을 hide() 시키고 두 번째 것을 slideDown() 시킴 $(‘.box’).hide().eq(1).slideDown(‘slow’); } });
  • 12. 순차적인 효과 적용하기 • 어떤 효과 후에 다른 효과가 발생하기 원할 때… ‒ 자동 순서 → Dave Methvin의 해결 방법을 기반으로 수많은 요소에 대해 효과를 순차적으로 반복 var $boxes = $(‘.box’).hide(); div = 0; $(‘#animate’).click(function(){ $($boxes[div++] || []).fadeIn(‘slow’, arguments.callee); }); • arguments.callee? - 현재 실행되고 있는 함수를 지칭, 즉 위 function 안에서 $($boxes[div++] || []).fadeIn(‘slow’, arguments.callee); 를 지칭하는 재귀함수 격이 됨
  • 13. 요소들이 현재 애니메이션 중인지 알아내기 • :animate 셀렉터 사용 $(‘#animate’).click(function(){ $(‘.box’).filter(‘:not(:animated)’) .animate({marginLeft : -10}, speed) .animate({marginLeft : 10}, speed) .animate({marginLeft : -10}, speed) .animate({marginLeft : 10}, speed) .animate({marginLeft : -10}, speed) .animate({marginLeft : 10}, speed) .animate({marginLeft : 0}, speed) } ‒ .box 요소가 애니메이션 중이 아닐 때만 실행 됨
  • 14. 애니메이션 종료 및 리셋하기 • stop() 메서드를 통해 애니메이션의 희름을 중간에 멈출 수 있다. $(‘#animate’).hover(function(){ $(‘.box’).stop().fadeTo(200, 1); }, fucntion(){ $(‘.box’).stop().fadeTo(200, 0); ‒});흠…. 솔직히 차이가 뭔지 모르겠다… ㅠ_ㅠ stop()을 없애도 아무 차이 안난다 ;;;
  • 15. 효과에 사용자 정의 이징(Easing)메서드 사용하기 • jQuery는 swing과 linear라는 두 개의 easing 함수를 내장하고 있는데, 그 외 다른 이징 함수를 사용하고 싶을 때 easing 함수를 수동으로 추가하지 않고, jquery.easing 플러그인을 사용하여 이 미 정의된 컬렉션을 사용 $(‘#animate’).click(function(){ $(‘.box’).({scrollTop : ‘+=100’}, {duration : 400, easing : ‘easeOutElastic’ }); });
  • 16. 모든 효과를 동작하지 않게 하기 • 애니메이션 동작을 하지 않되 animate 메서드와 그 최종 값을 지원 • $.fx.off = true; 를 설정함으로 애니메이션 동작을 않게 함 $.fx.off = true; // 이후 모든 애니메이션은 동작하지 않음 $(‘#animate’).click(function(){ $(‘.box’).animate({width : ‘+=100’, height : ‘+=100’}); }); • $.fx.off = false; 를 설정하면 다시 동작 가능
  • 17. 고급 효과를 위해 jQuery UI 사용하기 • 복잡한 효과를 만들거나 특별한 효과가 필요한 경우 jQuery UI 라이브러리를 사용 $(‘#animate’).click(function(){ $(‘.box’).toggleClass(‘big’, 2000); }); $(‘#effect’).click(function(){ $(‘.box’).effect(‘explode’), null, 2000); }); ‒ Chrome 기준 실행 안됨 ;;; -ㅅ- ;;;;
  • 18. END