티스토리 뷰

animate함수는 요소에 대하여 애니메이션 효과를 지정하여 보여줄 수 있도록 합니다.


  • animate의 함수 형태
1
2
3
4
$(선택자).animate(object);
$(선택자).animate(object, speed);
$(선택자).animate(object, speed, easing);
$(선택자).animate(object, speed, easing, callback);
cs

object는 객체타입으로 속성을 지정한다.

speed는 밀리초를 지정하여 애니메이션이 수행될 시간을 지정한다. (1000은 1초)

easing은 애니메이션의 부드러운 효과를 나타낼 때 사용한다.

callback은 콜백함수로써 애니메이션이 끝난 후 수행될 함수를 지정한다.



  • animate에 지정할 수 있는 효과 속성

opacity, top, left, right, bottom, height, width, margin, padding





+사각형 요소를  좌우로 움직이는 애니메이션 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 <style>
        .square{
            width: 45px;
            height: 30px;
            background-color: cadetblue;
            left: 0;
            
            position: absolute;
        }
 </style>
 
 
 <script>
        $(document).ready(function () {
            dwidth=$(document).width();
            wwidth=$(window).width();
            
            $('.square').click(function(){
                swidth = $(this).width();
                sheight = $(this).height();
                dwidth = dwidth - swidth;
                
                $(this).
                        animate({left:dwidth, width:swidth*2, height:sheight*2},1000).
                        delay(2000).
                        animate({left:"-="+dwidth, width:swidth, height:sheight},1000);              
            });
            
            
            
        });
 </script>
 
 
 <div class="square"></div>
cs

animate는 단독으로 사용할 때도 있지만 위와 같이 메서드 체이닝의 형태로 사용이 가능하다.

25라인의 delay(2000)함수는 2초동안 잠시 멈추고 대기하는 기능을 하는 함수다.













+마우스 스크롤에 따라 딸려오는 요소 제작

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<html>
<head>
     <meta charset="utf-8">
    <script  src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script>
        window.onload = function(){ 
                var scrollTmp=0;
              $(window).scroll(function () { 
                  console.log($('.testClass').scrollTop());
                  console.log($(window).scrollTop());  //브라우저위로부터 스크롤돈 거리를 구한다.
                  console.log($('.testClass'));
                  
                  if(scrollTmp < $(window).scrollTop()){
                      moveValue = $(window).scrollTop() - scrollTmp; 
                      scrollTmp = $(window).scrollTop();
                      $('.testClass').animate({"top""+="+moveValue+"px"},300"linear");
                  }else{
                      moveValue = scrollTmp - $(window).scrollTop(); 
                      scrollTmp = $(window).scrollTop();
                      $('.testClass').animate({"top""-="+moveValue+"px"},300"linear");
                    }
                  
              });
        }
    </script>
 
<title></title>    
</head>
 
    
<body>
 
<div style="height:800px;">
<div class="testClass" style="position:relative;">
    테스트할것
</div>
</div>
    
</body>
</html>
cs





+이미지 슬라이더

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<html>
 
<head>
    <style>
        .slideWrap {
            width: 400px;
            height: 250px;
            position: relative;
            overflow: hidden;
            border-radius: 15px;
            margin-left: 480px;
        }
        
        .imageWrap {
            width: 1200px;
            position: relative;
        }
        
        .imageView {
            width: 400px;
            height: 250px;
        }
        
        .clear {
            clear: both;
        }
        
        .arrowWrap.left {
            position: absolute;
            width: 400;
            top: 100px;
            text-align: left;
        }
        
        .arrowWrap.right {
            position: absolute;
            width: 400;
            top: 100px;
            text-align: right;
        }
        
        .contentWrap {
            position: absolute;
            width: 400;
            top: 180px;
            left: 10px;
        }
        
        .contentWrap .content {
            background-color: black;
            opacity: 0.5;
            color: white;
            padding: 8px;
            font-size: 12px;
        }
    </style>
    <script src="/jqueryfile/jquery-1.11.3.js"></script>
    <script>
        $(document).ready(function () {
            //해당 선택자 태그에 data-idx속성값 적용
            $('.imageView').each(function (index, item) {
                $(this).attr('data-idx', index);
            });
            
            $('.contentWrap .content').each(function (index, item) {
                $(this).attr('data-idx', index);
            });
            //처음에는 콘텐츠 글씨 안보여줌
            $('.content').hide();
            
            //3초 단위로 slide() 한 번씩 호출
            setInterval(function () {
                slide();
            }, 3000);
            
        });
 
        function slide() {
            //애니메이션 이동 값
            idxAni = -400;
            
            //0.5초간 애니메이션 실행 세번째 인자 function은 애니메이션이 끝난 후 수행될 콜백함수
            $('.imageWrap').animate({
                left: idxAni
            }, 500function () {
                idx = $('.imageWrap .imageView:nth-child(2n)').attr('data-idx');
                
                console.log(idx);
                //현재 해당하는 data-idx가 아닌 콘텐츠 문구는 안보여줌
                $(".content:not(.content[data-idx='+idx+'])").hide();
                //현재 해당하는 data-idx의 콘텐츠 문구를 보여줌
                $('.content[data-idx=' + idx + ']').show();
                //.imageWrap에 현재 지나가는 슬라이드를 다시 뒤에 붙여줌
                $('.imageWrap .imageView:first-child').appendTo('.imageWrap');
                $('.imageWrap').css('left''0');
            }).delay(1000);
            //작업이 끝난 후 1초 딜레이
        }
    </script>
    <title>슬라이더 구현</title>
</head>
 
<body> IMAGE SLIDER
    <div class="slideWrap">
        <div class="imageWrap"
            <img class="imageView" src="/images/image1.jpg" /
            <img class="imageView" src="/images/image2.jpg" /
            <img class="imageView" src="/images/images3.jpg" /
        </div>
        <div class="contentWrap"> <span class="content">
                        고양이들
                    </span> <span class="content">
                        보노보노
                    </span> <span class="content">
                        해피
                    </span
        </div>
        <div class="arrowWrap left"
            <span>left</span
        </div>
        <div class="arrowWrap right"
            <span>right</span
        </div>
    </div>
</body>
 
</html>
cs


Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday