본문 바로가기

[자기계발]/유튜브로 코딩배우기

[생활코딩] jQuery 동적인 애니메이션 효과 알아보기

반응형

이번 편에서는 jQeury 애니메이션 효과를 이용하여 웹페이지를 보다 동적으로 보여주는 기법에 대해 알아볼 것이다.


효과란?

  • JavaScript와 CSS를 이용해서 HTML element에 동적인 효과를 줄 수 있다.
  • jQuery의 효과 method를 호출하는 것만으로 간단히 효과를 줄 수 있다.

1) fadeout, fadein, hide, show, slidedown, slideup, mix 예제

<!DOCTYPE html>
<html>
    <head>
        <style>        span {
                color:red;
                cursor:pointer;
            }
            div {
                margin:3px;
                width:80px;
                height:80px;
            }
            div {
                background:#f00;
            }
</style>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>
        <input type="button" id="fadeout" value="fade out" />
        <input type="button" id="fadein" value="fade in" />
        <input type="button" id="hide" value="hide" />
        <input type="button" id="show" value="show" />
        <input type="button" id="slidedown" value="slide down" />
        <input type="button" id="slideup" value="slide up" />
        <input type="button" id="mix" value="mix" />
        <div id="target">
            target
        </div>
        <script>$('input[type="button"]').click( function(e) {
                var $this = $(e.target);
                switch($this.attr('id')) {
                    case 'fadeout':
                        $('#target').fadeOut('slow');
                        break;
                    case 'fadein':
                        $('#target').fadeIn('slow');
                        break;
                    case 'hide':
                        $('#target').hide();
                        break;
                    case 'show':
                        $('#target').show();
                        break;
                    case 'slidedown':
                        $('#target').hide().slideDown('slow');
                        break;
                    case 'slideup':
                        $('#target').slideUp('slow');
                        break;
                    case 'mix':
                        $('#target').fadeOut('slow').fadeIn('slow').delay(1000).slideUp().slideDown('slow', function(){alert('end')});
                        break;
                }
            }) 
        </script>
    </body>
</html>
  • e.target 은 event가 발생한 element를 받아낸다. 이것을 wrapper $로 감싸서 this에다가 저장한다.
  • →fadeout을 클릭하면 이 element에 대한 object값을 전달 한다
  • 그 뒤에는 swtich 문이 나온다. $this.attr('id)가 나오는데 주어진 element <input~ /> 의 속성 중에 id에 해당되는 속성의 값을 가져오라는 뜻 = fadeout
  •  그럼 fadeout에 해당되는 case에 이 switch문이 멈추면서 아래 코드가 실행이 된다.
  • .fadeOut(xx) 이 xx에서 속도조정이 가능하다
  • delay(1000) 1000이면 1초간 정지를 의미한다.
  • 맨 아래 slow 옆은 익명함수이다.
  • 이들은 자주 사용되는 기능인데 편리하지만 자유도가 떨어진다.

2) animiate 예제 

<!DOCTYPE html>
<html>
    <head>
        <style>        
            div {
                background-color:#bca;
                width:100px;
                border:1px solid green;
            }
</style>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>
        <button id="go">
            &raquo; Run
        </button>
 
        <div id="block">
            Hello!
        </div>
        <script>/* Using multiple unit types within one animation. */
 
            $("#go").click( function() {
                $("#block").animate({
                    width: "300px",
                    opacity: 0.4,
                    marginLeft: "50px",
                    fontSize: "30px",
                    borderWidth: "10px"
                }, 3000);
            });</script>
    </body>
</html>
  • 위의 예제와 달리, 디테일하게 애니메이션 효과를 제어할 수 있다
  • <button>은 id값이 go 인 버튼이다
  • 애니메이션의 대상이되는 div
  • #go를 클릭했을 때 이 evnethandler를 실행한다
  • #block 에다가 element라는 method를 실행한다
  • animate method에 첫 번째 인자로 전달되는 width같은 property는 최종적으로 어떤 모습을 하고 있어야 하는 가를 말해준다
  • 맨 위의 css를 보면 div에 기본 디자인이 있다. 이것을 animate 하면 시간의 순서대로, 순차적으로 보여주게 된다.
  • 디자인이 전달된 수치들에 해당되는 디자인으로 바꾸게 되는 것이 animate의 핵심이다
  • 3000은 animation 효과가 3초안에 끝난다는 뜻으로, 단위는 밀리 세크이며1/1000초 이다

이전글 보고오기

반응형