본문 바로가기
jQuery

jQuery 이펙트효과

by FraisGout 2020. 7. 3.

이펙트(effect) 효과

제이쿼리는 웹 페이지에 이펙트 효과를 손쉽게 넣을 수 있는 다양한 메소드를 제공합니다.

 

이러한 이펙트 효과는 기본 설정으로 바로 사용할 수도 있고, animate() 메소드를 통해 설정을 변경해서 사용할 수도 있습니다.

 

요소의 표시와 숨김

.hide() 메소드는 선택한 요소를 순간적으로 사라지게 하고, .show() 메소드는 나타나게 합니다.

 

 

 

.hide() 메소드를 통해 숨겨진 요소는 CSS display 속성값이 none으로 설정됩니다.

 

, 이렇게 숨겨진 요소는 더는 웹 페이지의 레이아웃에 영향을 주지 않고 완전히 사라지게 됩니다.

 

예제

$(function() {

 

$("#showBtn").on("click", function() {

 

$("#text").show(); // id"text"인 요소를 나타나게 함.

 

});

 

$("#hideBtn").on("click", function() {

 

$("#text").hide(); // id"text"인 요소를 숨김.

 

});

 

});

 

CSSvisibility 속성의 속성값을 hidden으로 설정해도 HTML 요소를 숨길 수 있습니다.

하지만 이때는 보이지만 않을 뿐 숨겨진 요소는 여전히 웹 페이지의 레이아웃에 영향을 주게 됩니다.

 

인수로 밀리초에 해당하는 숫자나 "slow", "fast" 등의 예약어를 전달하여, 이펙트 효과의 속도를 조절할 수도 있습니다.

 

예제

$(function() {

 

$("#showBtn").on("click", function() {

 

$("#text").show(2000); // id"text"인 요소를 2초에 걸쳐 나타나게 함.

 

});

 

$("#hideBtn").on("click", function() {

 

$("#text").hide("fast"); // id"text"인 요소를 빠르게 숨김.

 

});

 

});

 

요소의 표시 상태 토글

제이쿼리에서는 선택한 요소의 현재 표시 상태에 따라 다른 동작을 하는 .toggle() 메소드를 사용할 수 있습니다.

 

선택한 요소가 현재 사라진 상태라면 .show() 메소드의 동작을 수행하고, 나타나 있는 상태라면 .hide() 메소드의 동작을 수행합니다.

 

예제

$(function() {

 

$("#toggleBtn").on("click", function() {

 

$("#text").toggle("slow"); // id"text"인 요소를 느리게 나타나게 하거나 숨김.

 

});

 

});

 

페이드(fade) 효과

제이쿼리에서 페이드(fade) 효과는 해당 요소의 CSS opacity 속성값을 빠르게 변경하여 표현합니다.

 

이러한 페이드 효과를 표현하기 위해 사용되는 메소드는 다음과 같습니다.

 

 

 

1. .fadeIn()

 

2. .fadeout()

 

3. .fadeTo()

 

4. .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" 등의 예약어를 전달하여, 페이드 효과의 속도를 조절할 수도 있습니다.

 

예제

$(function() {

 

$("#fadeInBtn").on("click", function() {

 

$("#divBox").fadeIn("slow"); // id"divBox"인 요소를 느리게 점점 나타나게 함.

 

});

 

$("#fadeOutBtn").on("click", function() {

 

$("#divBox").fadeOut(2000); // id"divBox"인 요소를 2초에 걸쳐 점점 사라지게 함.

 

});

 

});

 

페이드 효과의 토글

제이쿼리에서는 선택한 요소의 현재 표시 상태에 따라 다른 동작을 하는 .fadeToggle() 메소드를 사용할 수 있습니다.

 

선택한 요소가 현재 사라진 상태라면 .fadeIn() 메소드의 동작을 수행하고, 나타나 있는 상태라면 .fadeOut() 메소드의 동작을 수행합니다.

 

예제

$(function() {

 

$("#fadeToggleBtn").on("click", function() {

 

// id"divBox"인 요소를 1초에 걸쳐 점점 나타나게 하거나 사라지게 함.

 

$("#divBox").fadeToggle(1000);

 

});

 

});

 

페이드 효과의 투명도 설정

.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);

 

});

 

});

 

슬라이드(slide) 효과

제이쿼리에서 슬라이드(slide) 효과는 해당 요소의 CSS height 속성값을 빠르게 변경하여 표현합니다.

 

이러한 슬라이드 효과를 표현하기 위해 사용되는 메소드는 다음과 같습니다.

 

 

 

1. .slideUp()

 

2. .slideDown()

 

3. .slideToggle()

 

슬라이드 업(slide up)과 슬라이드 다운(slide down)

.slideUp() 메소드는 선택한 요소가 서서히 올라가면서 사라지는 효과를 보여줍니다.

 

또한, .slideDown() 메소드는 선택한 요소가 서서히 내려오면서 나타나는 효과를 보여줍니다.

 

예제

$(function() {

 

$("#slideUpBtn").on("click", function() {

 

$("#divBox").slideUp(); // id"divBox"인 요소를 올라가면서 사라지게 함.

 

});

 

$("#slideDownBtn").on("click", function() {

 

$("#divBox").slideDown(); // id"divBox"인 요소를 내려오면서 나타나게 함.

 

});

 

});

 

인수로 밀리초에 해당하는 숫자나 "slow", "fast" 등의 예약어를 전달하여, 슬라이드 효과의 속도를 조절할 수도 있습니다.

 

예제

$(function() {

 

$("#slideUpBtn").on("click", function() {

 

$("#divBox").slideUp(500); // id"divBox"인 요소를 0.5초에 걸쳐 올라가면서 사라지게 함.

 

});

 

$("#slideDownBtn").on("click", function() {

 

$("#divBox").slideDown(300); // id"divBox"인 요소를 0.3초에 걸쳐 내려오면서 나타나게 함.

 

});

 

});

 

슬라이드 효과의 토글

제이쿼리에서는 선택한 요소의 현재 표시 상태에 따라 다른 동작을 하는 .slideToggle() 메소드를 사용할 수 있습니다.

 

선택한 요소가 현재 사라진 상태라면 .slideDown() 메소드의 동작을 수행하고, 나타나 있는 상태라면 .slideUp() 메소드의 동작을 수행합니다.

 

예제

$(function() {

 

$("#slideToggleBtn").on("click", function() {

 

// id"divBox"인 요소를 빠르게 올라가면서 사라지거나 내려오면서 나타나게 함.

 

$("#divBox").slideToggle("fast");

 

});

 

});

 

이펙트 효과의 제어

제이쿼리에서는 다음 메소드를 사용하여 사용자가 직접 이펙트 효과를 제어할 수 있습니다.

 

 

 

1. .delay()

 

2. .stop()

 

3. .finish()

 

이펙트 효과의 지연 설정

.delay() 메소드는 실행 중인 큐 안에서 연속적으로 실행되는 이펙트 효과 사이의 지연 시간을 설정합니다.

 

 

 

다음 예제는 페이드 아웃 효과와 페이드 인 효과 사이에 1초의 지연시간을 설정하는 예제입니다.

 

예제

$(function() {

 

$("#startBtn").on("click", function() {

 

// id"divBox"인 요소를 0.5초에 걸쳐 사라지게 하고

 

// 1초의 지연시간 뒤에 다시 2초에 걸쳐 나타나게 함.

 

$("#divBox").fadeOut(500).delay(1000).fadeIn(2000);

 

});

 

});

 

이펙트 효과의 중지

제이쿼리에서는 .stop() 메소드와 .finish() 메소드를 사용하여 실행 중인 이펙트 효과를 중지시킬 수 있습니다.

 

 

 

.stop() 메소드는 선택한 요소에서 실행 중인 모든 이펙트 효과를 즉시 중지시킵니다.

 

.finish() 메소드는 거기에 더해서 선택한 요소가 포함된 큐까지 제거하여 모든 이펙트 효과를 전부 종료시킵니다.

 

 

 

예제

$(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();

 

});

 

});

 

jQuery.fx 객체

제이쿼리의 jQuery.fx 객체는 이펙트 효과가 구현되는 방법을 제어하는 다양한 프로퍼티를 가지고 있습니다.

 

 

 

1. jQeury.fx.speeds

 

2. jQeury.fx.interval

 

3. jQeury.fx.off

 

jQuery.fx.speeds 프로퍼티

jQuery.fx 객체의 speeds 프로퍼티는 "slow", "normal", "fast" 값을 가지고 이펙트 효과의 속도를 나타냅니다.

 

속도의 기본값을 speeds 프로퍼티를 이용하여 변경할 수도 있습니다.

 

예제

$(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;

 

});

 

});

 

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;

 

});

 

});

 

.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("사용자 정의 이펙트가 실행됐어요!");

 

}

 

);

 

});

 

});

 

.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 속성값으로 미리 정의된 다음 값을 사용할 수 있습니다.

 

 

 

1. show

 

2. hide

 

3. 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"으로 설정함.

 

});

 

});

'jQuery' 카테고리의 다른 글

jQuery 유틸리티 메소드  (0) 2020.07.03
jQuery Ajax연동  (0) 2020.07.03
jQuery 이벤트처리  (0) 2020.07.03
jQuery 스타일설정  (0) 2020.07.03
jQuery 요소의영역  (0) 2020.07.03

댓글