Notice
Recent Posts
Recent Comments
Link
Tags
more
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

JongDDA의 한걸음 한걸음씩

[JavaScript & Jquery] 효과 메소드 (애니메이션 효과) 본문

개발/프론트엔드

[JavaScript & Jquery] 효과 메소드 (애니메이션 효과)

종따 2021. 4. 6. 00:08
728x90

효과 메소드

효과 메소드를 사용하면 스타일(CSS)를 사용하는 것보다 좀 더 역동적인 동작을 적용하여 객체를 화려하게 숨기거나 보이게 할 수 있다. 효과 메소드에는 CSS 속성을 바꾸는 메소드와 애니메이션 기능을 다루는 메소드가 있다.

 

hide() / show()

요소를 숨기거나 숨겨져 있는 요소를 노출시키는 메소드들이다.

- 선택적 인자 : 속도(400ms 기본) 

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
    <title>애니메이션 효과</title>
    <style>
        #cpp{
            display: none;
        }
    </style>
</head>
<body>

    <h1>애니메이션 효과 써보자</h1>
    <ul>
        <li>자바</li>
        <li id="py">파이썬</li>
        <li id="cpp">C++</li>
        <li>자바스크립트</li>
    </ul>
    <script src= "03_script.js"></script>
</body>
</body>
</html>
$("#py").click(function(){
    $(this).prev().hide() // 앞선 형제 숨기기
    $(this).next().show() // 다음 형제 보이기
})

 

toggle()

위에서 구현한 기능을 toggle() 메소드 하나로 처리할 수 있다. hide(), show()와 동일한 매개변수 사용이 가능하다.

 

// toggle() = show() + hide()
$("#py").click(function(){
    $(this).prev().toggle() 
    $(this).next().toggle() 
})

 

slideToggle()

slideToggle은 제이쿼리 애니메이션 메소드 중 하나로 블록이 보이지 않을 때에는 보이게 하고, 보일 때에는 보이지 않게 한다. 열고 닫을 때에는 양방향으로 애니메이션 효과(움직이는 효과)를 준다.

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리</title>
    <style>
        #box{
            margin: 0;;
        }
        #box ul{
            margin: 0; padding: 0; list-style-type: none;
        }
        #box ul li{
            padding: 8px; color: blue; border-bottom: 1px solid #cccccc;
        }
        #box_btn{
            position: absolute; /* 문서 흐름에서 제외되어, 절대 위치를 정한다. */
            top : 0; right: 0;
            padding: 10px;
            border-radius: 8px;
            background-color: teal;
            color: white; cursor: pointer;
        }

    </style>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
</script>
</head>
<body>
    <div id="box">
    <ul>
        <li>사전</li>
        <li>뉴스</li>
        <li>증권</li>
        <li>부동산</li>
        <li>지도</li>
    </ul>
    </div>
    <div id="box_btn">MENU</div>
    <script src= "01_script.js"></script>
</body>
</html>
// 애니메이션 메소드 슬라이드토글 기본형태
// $(선택요소).slideToggle(속도값 ms) : 기본값 400ms 
// 슬라이드 되는데 걸리는 시간을 선택적으로 넣을 수 있다!

$(document).ready(function(){
    $("#box_btn").click(function(){
        $("#box").slideToggle(1000)
    })
})

fadeIn() / fadeOut() / fadeToggle()

나타나고 사라진다는 기본 사항은 모두 비슷한데, fade 메소드는 점점 투명해지거나 점점 흐려지는 효과까지 포함한다. hide(), show()와 동일한 매개변수 사용이 가능하다.

 

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
    <title>애니메이션 효과</title>
    <style>
    </style>
</head>
<body>

    <h1>애니메이션 효과 써보자</h1>

    <button>스르륵</button><br>
   
    <img src="./cake.jpg" alt="원하는 이미지 아무거나 쓰세요!">
    <script src= "03_script.js"></script>
</body>
</body>
</html>
$("button").click(function(){
   // $("img").fadeIn(2000)
   // $("img").fadeOut(2000)   
   $("img").fadeToggle(2000)   
})

fadeTo()

fade 효과를 지정한 투명도만큼만 주게 된다.

 

// $('선택요소').fadeTo(속도, 투명도, 함수);
$("button").click(function(){
   // fadeTo : 얼마의 시간동안 얼마까지 투명도 조절할까
   $("img").fadeTo(1000,0.4,function(){
   /*
    효과 메소드의 효과 처리가 모두 끝난 이후에 처리할 동작을 함수로 전달할 수 있다!(선택적)
   */
  console.log("효과메소드에 전달된 인자 함수!") 
})

 

animate()

선택한 요소에 다양한 모션을 적용할 수 있다. 애니메이션 효과. animate() 메소드는 연달아 지정하는 것이 가능하다.

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
    <title>애니메이션 효과</title>
    <style>
        .box{
            width: 100px; height: 100px;
            background-color: orangered;
        }
    </style>
</head>
<body>
    <h1>애니메이션 효과 써보자</h1>
    <div class="box"></div>
    <script src= "03_script.js"></script>
</body>
</body>
</html>
// animate() : 변경하고자 하는 CSS 속성을 얼마의 기간동안 처리해준다
// 체이닝 : 메소드 호출 뒤에 메소드 호출을 추가한다!
// $('선택요소').animate({애니메이션속성},속도,함수);
$(document).ready(function(){
    $(".box").animate({width: 500}, 2000, 
    function(){
        console.log("1번끝")
    }).animate({
        height: 500
    },2000,function(){
        console.log("2번끝")
    }).animate({
        width: 100
    },2000,function(){
        console.log("3번끝")
    }).animate({
        height: 100
    },2000,function(){
        console.log("4번끝")
    })  
})

728x90
반응형
Comments