jquery
jQuery - .animate()
CSS 스타일을 이용해 많은 종류의 소스와 속성 값으로 어렵게 애니메이션을 제작해 왔다면 .animate() 메소드는 쉽게 제작할 수 있도록 설계되었습니다.
CSS 의 거의 모든 속성을 이용할 수 있으며 따라서 선택한 요소에 다양한 동작을 적용할 수 있습니다.
형식은 다음과 같습니다.
매개변수에 대한 설명은 다음 표를 참고합니다.
예를 들어 padding-left 는 언더바 다음에 나오는 첫 단어를 대문자로 바꿔주고, 언더바는 제거하는 것입니다.
CSS 에서는 padding-right 이지만 낙타 표기법으로 paddingRight 가 되도록 해주어야 합니다. 그럼, border-bottom-width 는 어떻게 변환되어야 할까요? 마찬가지로 borderBottomWidth 가 되어야 하며, border-bottom-color 는 borderBottomColor 로, font-size 도 'fontSize: 16px' 의 형식으로 변환되어야 합니다.
이렇게 하면 클릭할 때마다 요소의 크기가 30px 만큼 플러스되어 점점 커지게 합니다.
요소의 위치를 조작하려면 CSS 의 position 이 relative, fixed, 또는 absolute 중 하나로 설정되어있어야 합니다. HTML 은 기본적으로 모든 태그들은 static 상태입니다. 따라서 position을 먼저 설정해주고, 위치를 조작합니다.
여러 개의 애니메이션이 순서대로 움직이는데, 뚝뚝 끈기는 것이 아니라 유연하게 동작한다는 점입니다. 하나의 애니메이션이 끝나면 다음 애니메이션이 실행되며 그 과정이 부드럽게 이어지게 됩니다.
여러 개의 요소를 동시에 움직이게 하려면 어떻게 해야 할까요? 다음은 두 개의 요소가 작업이 끝나면 완료되었다는 확인 창을 띄웁니다.
CSS 의 거의 모든 속성을 이용할 수 있으며 따라서 선택한 요소에 다양한 동작을 적용할 수 있습니다.
형식은 다음과 같습니다.
$( select ).animate(properties [, speed] [, easing] [, callback]);
매개변수에 대한 설명은 다음 표를 참고합니다.
매개변수 | 설 명 |
---|---|
properties | 필수 선택. 애니메이션에 적용될 CSS 속성과 값. 객체 배열로 지정하며 낙타 표기법으로 지정. |
speed | 선택 사항. 애니메이션 속도를 제어. 기본값: 400(밀리 초)
|
easing | 선택 사항. 애니메이션 가속도를 제어.
|
callback | 선택 사항. 콜백 함수는 작업이 완료된 후에 실행됨. |
낙타 표기법
매개변수 properties 에는 CSS 객체를 지정합니다. 거의 모든 CSS 를 사용할 수 있지만 언더바(-)가 있는 CSS 는 낙타 표기법으로 변환해야 합니다.예를 들어 padding-left 는 언더바 다음에 나오는 첫 단어를 대문자로 바꿔주고, 언더바는 제거하는 것입니다.
$( selecter ).animate({
'paddingLeft': '10px',
'paddingRight': '10px'
});
CSS 에서는 padding-right 이지만 낙타 표기법으로 paddingRight 가 되도록 해주어야 합니다. 그럼, border-bottom-width 는 어떻게 변환되어야 할까요? 마찬가지로 borderBottomWidth 가 되어야 하며, border-bottom-color 는 borderBottomColor 로, font-size 도 'fontSize: 16px' 의 형식으로 변환되어야 합니다.
$( selecter ).animate({
'borderBottomWidth': '10px',
'borderBottomColor': 'red'
});
단축 기능
매개변수 properties 에는 요소를 숨기거나 표시할 수 있는 단축 기능을 제공합니다. show(), hide(), toggle() 기능이 그것입니다. $().toggle().animate({'height': '100px'}); 와 같지만 각각의 속성에 문자열 "show", "hide", "toggle" 을 지정하면 요소의 표시 여부를 결정할 수 있습니다.$( selecter ).animate({
'width': '300px',
'height': 'toggle',
'opacity': 'toggle'
});
또는
$( selecter ).click(function(){
$(this).toggle();
});
산술 기호
매개변수 properties 에 상대 값으로 +=, -= 와 같은 산술 기호를 넣을 수 있습니다. 이것은 현재의 값에 플러스(+)하거나 마이너스(-) 시켜 요소에 변화를 주는 것입니다.$( selecter ).click(function(){
$( selecter ).animate({
'width': '+= 30px',
'height': '+= 30px'
});
});
이렇게 하면 클릭할 때마다 요소의 크기가 30px 만큼 플러스되어 점점 커지게 합니다.
요소의 위치를 조작하려면 CSS 의 position 이 relative, fixed, 또는 absolute 중 하나로 설정되어있어야 합니다. HTML 은 기본적으로 모든 태그들은 static 상태입니다. 따라서 position을 먼저 설정해주고, 위치를 조작합니다.
체이닝 애니메이션
온점(.)을 이용해 메서드에 메서드를 이어 붙이는 체이닝 방법을 사용하면 역동적인 애니메이션을 구현할 수 있습니다.$( selecter ).click(function(){
$( selecter ).animate({
'width': '30px',
'height': '30px'
}, 3000)
.animate({
'width': '300px',
'height': '100px'
}, 2000)
.animate({
'width': '200px',
'height': '30px'
}, 3000);
});
여러 개의 애니메이션이 순서대로 움직이는데, 뚝뚝 끈기는 것이 아니라 유연하게 동작한다는 점입니다. 하나의 애니메이션이 끝나면 다음 애니메이션이 실행되며 그 과정이 부드럽게 이어지게 됩니다.
여러 개의 요소를 동시에 움직이게 하려면 어떻게 해야 할까요? 다음은 두 개의 요소가 작업이 끝나면 완료되었다는 확인 창을 띄웁니다.
$( selecter ).click(function(){
var select01 = $("select1");
var select02 = $("select2");
select01.animate({
'width': '30px',
'height': '30px'
}, 3000);
select02.animate({
'width': '30px',
'height': '30px'
}, 3000);
$.when(select01, select02).then(function() {
alert("끝났당!");
});
});
애니메이션 반복
제이쿼리는 애니메이션을 반복 작업하는 메소드를 따로 제공하지 않습니다. 하지만 재귀호출 방법을 사용하면 구현은 간단합니다. 재귀호출은 함수인 자기 자신을 호출하는 것을 말합니다.function use_animated() {
$("#use-nth").animate({
height: "50%"
}, "slow")
.animate({
height: "90%"
}, "slow", use_animated);
}
use_animated();
1 댓글
와 재귀함수... setInterval만 생각하고 있다가 머리치고 갑니다! 감사합니다!
답글삭제