ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • vue의 UI애니메이션
    Vue.js 2022. 7. 19. 02:19

    vue에서 애니메이션을 주는 방법엔 2가지가 있다.

    먼저, css로 start라는 클래스를 미리주고, 거기엔 opacity : 0;과 transition: all 1s;을 주고,

    end라는 클래스를 모달창이 열릴 때 마다 부착해서 opacity : 1;로 만들어주면 된다.

    위처럼 클래스를 부착할 땐, :class="{ end : true }"이렇게 오브젝트형식으로 넣을 수 있다. 그냥 :class="end"도 가능하지만, 오브젝트형식으로 넣어주면, 조건부로 사용할 수 있다. 즉, { 클래스명 : 조건 }으로 사용하며 조건이 참일 때만 클래스가 붙는다. 그래서

    <div class="start" :class="{ end : 모달창열렸니 }" >

    이런 식으로 적으면, 버튼을 눌러서 모달창열렸니가 true로 바뀌어 모달창이 열리면 자동으로 end라는 클래스가 부착되어 opacity가 0에서 1로 1초동안 바뀌는 애니메이션이 된다.

     

    그런데 vue에서는 <transition>을 이용해서 애니메이션을 쉽게 만들 수 있다.

    먼저, 애니메이션을 주고싶은 요소를 <transition>으로 감싸주고, <transition name="작명">으로 이름을 붙여준다.

    그리고, style태그에서 .작명-enter-from / .작명-enter-active / .작명-enter-to 이렇게 3가지 클래스명을 작성해주고,

    .작명-enter-from { 애니메이션 동작 전 상태 }
    .작명-enter-active { 애니메이션 동작 중 상태, 대부분 transition 이런거 }
    .작명-enter-to { 애니메이션 동작 후 상태 }

    이런 식으로, 각각 적어주면 된다.

    예시를 들어보면,

    <transition name="fade">
       <Modal @closeModal="모달창열렸니 = false" :원룸들="원룸들" :누른거="누른거" :모달창열렸니="모달창열렸니" />
    </transition>

    이렇게, Modal태그를 transition으로 감싸주고, fade라고 이름을 붙여주고,

    .fade-enter-from {
      opacity: 0;
     }
    .fade-enter-active {
      transition: all 1s;
     }
    .fade-enter-to { 
      opacity: 1;
     }

    이렇게 적어주면 된다.

    마지막으로, 퇴장 애니메이션은 enter가 아니라 leave로만 바꿔주면 된다. 이것도 예시를 보면,

    .fade-leave-from {
      opacity: 1;
     }
    .fade-leave-active {
      transition: all 1s;
     }
    .fade-leave-to { 
      opacity: 0;
     }

    이런 식이다.

    'Vue.js' 카테고리의 다른 글

    vue의 라이프사이클  (0) 2022.07.20
    상품정렬기능과 데이터 원본보존  (0) 2022.07.19
    watcher로 데이터 감시  (0) 2022.07.19
    사용자 input받기(v-model)  (0) 2022.07.18
    custom event  (0) 2022.07.18

    댓글

Designed by Tistory.