이펙트 효과
요소의 표시와 숨김
이펙트 (effect) 효과
- 이러한 이펙트 효과는 기본 설정으로 바로 사용할 수도 있고,
- animate() 메소드를 통해 설정을 변경해서 사용할 수도 있다.
요소의 표시와 숨김 (.hide(), .show())
.hide() 메소드
- 선택한 요소를 순간적으로 사라지게 한다.
- .hide() 메소드를 통해 숨겨진 요소는 CSS display 속성값이 none으로 설정
.show() 메소드
- 선택한 요소를 순간적으로 나타내게 한다.
$(function() {
$("#showBtn").on("click", function() {
$("#text").show(); // id가 "text"인 요소를 나타나게 함.
});
$("#hideBtn").on("click", function() {
$("#text").hide(); // id가 "text"인 요소를 숨김.
});
// 인수로 밀리초에 해당하는 숫자나 "slow", "fast" 등의 예약어를 전달하여, 이펙트 효과의 속도를 조절 가능
$("#showBtn").on("click", function() {
$("#text").show(2000); // id가 "text"인 요소를 2초에 걸쳐 나타나게 함.
});
$("#hideBtn").on("click", function() {
$("#text").hide("fast"); // id가 "text"인 요소를 빠르게 숨김.
});
});
CSS visibility 속성의 값을 hidden으로 설정해도 HTML 요소를 숨길 수 있다.
- 이때는 보이지만 않을 뿐 여전히 웹 페이지의 레이아웃에 영향을 주게 된다.
See the Pen show and hide by taegeon-park (@taegeon-park23) on CodePen.
요소의 표시 상태 토글
선택한 요소의 현재 표시 상태에 따라 다른 동작을 하는 .toggle() 메소드를 사용할 가능
- 선택한 요소가 현재 사라진 상태라면 .show() 메소드의 동작을 수행
- 나타나 있는 상태라면 .hide() 메소드의 동작을 수행.
$(function() {
$("#toggleBtn").on("click", function() {
$("#text").toggle("slow"); // id가 "text"인 요소를 느리게 나타나게 하거나 숨김.
});
});
See the Pen show hide toggle by taegeon-park (@taegeon-park23) on CodePen.
페이드 효과
페이드(fade) 효과
제이쿼리에서 페이드(fade) 효과는 해당 요소의 CSS opacity 속성값을 빠르게 변경하여 표현.
- .fadeIn()
- .fadeout()
- .fadeTo()
- .fadeToggle()
페이드 인(fade in)과 페이드 아웃(fade out)
- .fadeIn() 메소드는 선택한 요소를 서서히 사라지게 하고,
- .fadeOut() 메소드는 서서히 나타나게 한다.
$(function() {
$("#fadeInBtn").on("click", function() {
$("#divBox").fadeIn(); // id가 "divBox"인 요소를 점점 나타나게 함.
});
$("#fadeOutBtn").on("click", function() {
$("#divBox").fadeOut(); // id가 "divBox"인 요소를 점점 사라지게 함.
});
// 인수로 밀리초에 해당하는 숫자나 "slow", "fast" 등의 예약어를 전달하여, 페이드 효과의 속도를 조절할 수도 있다.
$("#fadeInBtn").on("click", function() {
$("#divBox").fadeIn("slow"); // id가 "divBox"인 요소를 느리게 점점 나타나게 함.
});
$("#fadeOutBtn").on("click", function() {
$("#divBox").fadeOut(2000); // id가 "divBox"인 요소를 2초에 걸쳐 점점 사라지게 함.
});
});
See the Pen fade by taegeon-park (@taegeon-park23) on CodePen.
페이드 효과의 토글
제이쿼리에서는 선택한 요소의 현재 표시 상태에 따라 다른 동작을 하는 .fadeToggle() 메소드를 사용 가능
- 선택한 요소가 현재 사라진 상태라면 .fadeIn() 메소드의 동작을 수행하고,
- 나타나 있는 상태라면 .fadeOut() 메소드의 동작을 수행.
$(function() {
$("#fadeToggleBtn").on("click", function() {
// id가 "divBox"인 요소를 1초에 걸쳐 점점 나타나게 하거나 사라지게 함.
$("#divBox").fadeToggle(1000);
});
});
See the Pen fade toggle by taegeon-park (@taegeon-park23) on CodePen.
페이드 효과의 투명도 설정
.fadeTo() 메소드를 사용하면
- 페이드 효과에서 사용하는 최종 opacity 속성값을 직접 설정 가능
$(function() {
$("#fadeBtn").on("click", function() {
// id가 "divBox_01"인 요소를 2초에 걸쳐 opacity 속성값을 0.2까지만 변경시킴.
$("#divBox_01").fadeTo(2000, 0.2);
// id가 "divBox_02"인 요소를 2초에 걸쳐 opacity 속성값을 0.5까지만 변경시킴.
$("#divBox_02").fadeTo(2000, 0.5);
// id가 "divBox_03"인 요소를 2초에 걸쳐 opacity 속성값을 0.8까지만 변경시킴.
$("#divBox_03").fadeTo(2000, 0.8);
});
});
See the Pen fade opacity by taegeon-park (@taegeon-park23) on CodePen.
페이드 효과와 관련된 메소드
|메소드|설명|
|.fadeIn()|선택한 요소의 CSS opacity 속성값을 높여가며 요소를 나타지게 함.|
|.fadeOut()|선택한 요소의 CSS opacity 속성값을 높여가며 요소를 사라지게 함.|
|.fadeTo()|페이드 효과에서 사용하는 opacity 속성값을 직접 설정함.|
|.fadeToggle()|선택한 요소에 fadeIn() 메소드와 fadeOut() 메소드를 번갈아가며 적용함.|
슬라이드 효과
슬라이드(slide) 효과
제이쿼리에서 슬라이드(slide) 효과는 해당 요소의 CSS height 속성값을 빠르게 변경하여 표현
슬라이드 업(slide up)과 슬라이드 다운(slide down)
.slideUp() 메소드는 선택한 요소가 서서히 올라가면서 사라지는 효과를 보여줌
- 또한 선택한 요소가 서서히 내려오면서 나타나는 효과를 보여줌
$(function() {
$("#slideUpBtn").on("click", function() {
$("#divBox").slideUp(); // id가 "divBox"인 요소를 올라가면서 사라지게 함.
});
$("#slideDownBtn").on("click", function() {
$("#divBox").slideDown(); // id가 "divBox"인 요소를 내려오면서 나타나게 함.
});
// 인수로 밀리초에 해당하는 숫자나 "slow", "fast" 등의 예약어를 전달하여, 슬라이드 효과의 속도를 조절 가능
$("#slideUpBtn").on("click", function() {
$("#divBox").slideUp(500); // id가 "divBox"인 요소를 0.5초에 걸쳐 올라가면서 사라지게 함.
});
$("#slideDownBtn").on("click", function() {
$("#divBox").slideDown(300); // id가 "divBox"인 요소를 0.3초에 걸쳐 내려오면서 나타나게 함.
});
});
See the Pen slide by taegeon-park (@taegeon-park23) on CodePen.
슬라이드 효과의 토글
제이쿼리에서는 선택한 요소의 현재 표시 상태에 따라 다른 동작을 하는 .slideToggle() 메소드를 사용 가능
- 선택한 요소가 현재 사라진 상태라면 .slideDown() 메소드의 동작을 수행하고,
- 나타나 있는 상태라면 .slideUp() 메소드의 동작을 수행
$(function() {
$("#slideToggleBtn").on("click", function() {
// id가 "divBox"인 요소를 빠르게 올라가면서 사라지거나 내려오면서 나타나게 함.
$("#divBox").slideToggle("fast");
});
});
See the Pen slide-toggle by taegeon-park (@taegeon-park23) on CodePen.
슬라이드 효과와 관련된 메소드
메소드 | 설명 |
---|---|
.slideUp() | 선택한 요소의 CSS height 속성값을 높여가며 요소를 사라지게 함. |
.slideDown() | 선택한 요소의 CSS height 속성값을 낮춰가며 요소를 나타나게 함. |
.slideToggle() | 선택한 요소에 slideUp() 메소드와 slideDown() 메소드를 번갈아가며 적용함. |
이펙트 효과의 제어
이펙트 효과의 제어
제이쿼리에서는 다음 메소드를 사용하여 사용자가 직접 이펙트 효과를 제어 가능
1. .delay() 2. .stop() 3. .finish()
이펙트 효과의 지연 설정
.delay() 메소드는 실행 중인 큐 안에서 연속적으로 실행되는 이펙트 효과 사이의 지연 시간을 설정
$(function() {
$("#startBtn").on("click", function() {
// id가 "divBox"인 요소를 0.5초에 걸쳐 사라지게 하고
// 1초의 지연시간 뒤에 다시 2초에 걸쳐 나타나게 함.
$("#divBox").fadeOut(500).delay(1000).fadeIn(2000);
});
});
See the Pen effect by taegeon-park (@taegeon-park23) on CodePen.
이펙트 효과의 중지 (.stop(), .finish())
제이쿼리에서는 .stop() 메소드와 .finish() 메소드를 사용하여 실행 중인 이펙트 효과를 중지 가능
- .stop() 메소드는 선택한 요소에서 실행 중인 모든 이펙트 효과를 즉시 중지.
- .finish() 메소드는 거기에 더해서 선택한 요소가 포함된 큐까지 제거하여 모든 이펙트 효과를 전부 종료.
// 요소마다 직정 등록된 이벤트 핸들러는 현재 존재하느 <a> 요소에만 연결되며, 새롭게 추가되는 요소에는 연결되지 않는다.
$(function() {
$("#toggleBtn").on("click", function() {
// id가 "divBox"인 요소를 2초에 걸쳐 올라가면서 사라지거나 내려오면서 나타나게 함.
$("#divBox").slideToggle(2000);
});
$("#stopBtn").on("click", function() {
// id가 "divBox"인 요소에서 실행 중인 모든 이펙트 효과를 즉시 중지시킴.
$("#divBox").stop();
});
$("#finishBtn").on("click", function() {
// id가 "divBox"인 요소에서 실행 중인 모든 이펙트 효과를 즉시 중지시키고, 그 큐까지 모두 제거함.
$("#divBox").finish();
});
});
See the Pen effect stop, finish by taegeon-park (@taegeon-park23) on CodePen.
이펙트 효과의 제어와 관련된 메소드
메소드 | 설명 |
---|---|
.delay() | 실행 중인 큐 안에서 연속적으로 실행되는 이펙트 효과 사이의 지연 시간을 설정함. |
.stop() | 선택한 요소에서 실행 중인 모든 이펙트 효과를 즉시 중지시킴. |
.finish() | 선택한 요소에서 실행 중인 모든 이펙트 효과를 즉시 중지시키고, 선택한 요소가 포함된 큐까지 제거하여 모든 이펙트 효과를 전부 종료시킴. |
jQuery.fx 객체
jQuery.fx 객체
제이쿼리의 jQuery.fx 객체는 이펙트 효과가 구현되는 방법을 제어하는 다양한 프로퍼티를 가지고 있다.
- jQeury.fx.speeds
- jQeury.fx.interval
- jQeury.fx.off
jQuery.fx.speeds 프로퍼티
jQuery.fx 객체의 speeds 프로퍼티는 "slow", "normal", "fast" 값을 가지고 이펙트 효과의 속도를 나타낸다.
프로퍼티 값 | 밀리초(milisecond) |
---|---|
fast | 200 |
normal | 400 |
slow | 600 |
$(function() {
$("#toggleBtn").on("click", function() {
// id가 "divBox"인 요소를 빠르게(0.2초에 걸쳐) 올라가면서 사라지거나 내려오면서 나타나게 함.
$("#divBox").slideToggle("fast");
});
$("#setBtn").on("click", function() {
// jQuery.fx 객체의 speeds 프로퍼티의 fast의 기본값을 1초로 변경함.
jQuery.fx.speeds.fast = 1000;
});
});
See the Pen fx by taegeon-park (@taegeon-park23) on CodePen.
jQuery.fx.interval 프로퍼티
jQuery.fx 객체의 interval 프로퍼티는 이펙트 효과가 보여지는 동안의 초당 프레임 수를 나타낸다.
- 연속적인 프레임에서의 초당 프레임 수는 13으로 기본 설정
- 이러한 초당 프레임 수를 interval 프로퍼티를 이용하여 사용 목적에 맞게 변경 가능.
jQuery.fx.off 프로퍼티
jQuery.fx 객체의 off 프로퍼티를 true로 설정하면, 모든 이펙트 효과를 사용할 수 없게된다.
- 이렇게 이펙트 효과가 비활성화되면,
- 이펙트 효과는 실행되지 않으며 이펙트 효과의 마지막 상태로 즉시 변경
- off 프로퍼티는 특히 구형 버전의 브라우저를 다룰 때 유용하게 사용 가능.
$(function() {
$("#toggleBtn").on("click", function() {
// id가 "divBox"인 요소를 1초에 걸쳐 올라가면서 사라지거나 내려오면서 나타나게 함.
$("#divBox").slideToggle(1000);
});
$("#forbidBtn").on("click", function() {
// jQuery.fx 객체의 off 프로퍼티를 true로 설정함.
jQuery.fx.off = true;
});
});
See the Pen jQuery.fx.off by taegeon-park (@taegeon-park23) on CodePen.
jQuery.fx 객체 프로퍼티
프로퍼티 | 설명 |
---|---|
jQeury.fx.speeds | 밀리초에 해당하는 "slow", "fast" 등의 값을 가지고 이펙트 효과의 속도를 나타냄. |
jQeury.fx.interval | 이펙트 효과가 보여지는 동안의 초당 프레임 수를 나타냄. |
jQeury.fx.off | 모든 이펙트 효과를 사용할 수 없도록 비활성화시킴. |
사용자 정의 이펙트
.animate() 메소드
- 제이쿼리에서는 animate() 메소드를 이용하여 사용자가 직접 원하는 이펙트 효과를 정의가능
- .animate() 메소드는 여러 CSS 속성을 이용하여 새로운 이펙트 효과를 만들어낸다.
- .animate() 메소드의 원형
원형
$(선택자).animate(프로퍼티[,지속시간][,시간당속도함수][,콜백함수]);
- 프로퍼티 파라미터
- 필수이며, 이펙트 효과를 구성할 CSS 속성을 정의.
- 지속 시간
- 이펙트 효과가 지속될 시간을 전달.
- 시간당 속도 함수(easing function)
- 이펙트 효과의 시간당 속도를 전달.
- 콜백 함수
- 이펙트 효과의 동작이 완료된 후에 실행할 함수를 정의.
$(function() {
$("#animateBtn").on("click", function() {
$("#divBox").animate( // id가 "divBox"인 요소를
{
left: "+=100", // 오른쪽으로 100픽셀 이동하고,
opacity: 0.2 // 투명도를 0.2로 변경함.
}, 500, function() { // 0.5초에 걸쳐서 이펙트 효과가 진행됨.
$("#text").html("사용자 정의 이펙트가 실행됐어요!");
}
);
});
});
See the Pen animate by taegeon-park (@taegeon-park23) on CodePen.
.animate() 메소드 - 사용할 수 있는 CSS 속성
- .animate() 메소드는 색(color)에 관한 속성을 제외한 거의 모든 CSS 속성을 사용 가능
- .css() 메소드에서는 하이픈(-)으로 연결된 CSS 속성 명과 camelCase 방식으로 바꾼 속성 명을 둘 다 사용 가능
- 하지만 .animate() 메소드에서는 camelCase 방식의 속성 명만 사용 가능
.animate() 메소드에서 사용할 수 있는 CSS 속성 |
---|
backgroundPositionX |
backgroundPositionY |
borderWidth |
borderBottomWidth |
borderLeftWidth |
borderRightWidth |
borderTopWidth |
borderSpacing |
margin |
marginBottom |
marginLeft |
marginRight |
marginTop |
outlineWidth |
padding |
paddingBottom |
paddingLeft |
paddingRight |
paddingTop |
height |
width |
maxHeight |
maxWidth |
minHeight |
minWidth |
fontSize |
bottom |
left |
right |
top |
letterSpacing |
wordSpacing |
lineHeight |
textIndent |
.animate() 메소드 - 미리 정의된 값
.animate() 메소드는 CSS 속성값으로 미리 정의된 다음 값을 사용 가능
- show
- hide
- toggle
$(function() {
$("#animateBtn").on("click", function() {
$("#divBox").animate({
height: "toggle" // CSS height 속성값을 미리 정의된 "toggle"로 설정함.
});
});
});
.animate() 메소드 - 시간당 속도 함수
.animate() 메소드는 시간당 속도 함수(easing function)을 사용하여 이펙트 효과의 시간당 속도를 설정 가능
$(function() {
$("#divBox").mouseenter( function() {
$(this).stop().animate({
width: "300px" // CSS width 프로퍼티의 값을 "300px"로 설정함.
}, 1000, "linear"); // 시간당 속도 함수를 "linear"으로 설정함.
});
$("#divBox").mouseleave( function() {
$(this).stop().animate({
width: "50px" // CSS width 프로퍼티의 값을 "50px"로 설정함.
}, 1000, "swing"); // 시간당 속도 함수를 "swing"으로 설정함.
});
});
See the Pen animate2 by taegeon-park (@taegeon-park23) on CodePen.
'JavaScirpt > jQuery' 카테고리의 다른 글
jQuery 10 - [유틸리티 메소드, 타입검사, 기타] (0) | 2021.03.23 |
---|---|
jQuery - 9 [Ajax, 개요, HTTP요청, 메소드, Form요소] (0) | 2021.03.23 |
jQuery 7 - [이벤트 처리, 이벤트 개념, 처리, 위임, 메소드] (0) | 2021.03.22 |
jQuery 6 - [스타일 설정, 프로퍼티, 클래스 설정] (0) | 2021.03.22 |
jQuery 5 - [요소의 영역, 요소의 크기, 위치 ] (0) | 2021.03.17 |