이안의 평일코딩

[Vue] Vue의 기초(7) - UI 애니메이션 <transition> 본문

Front-end/Vue

[Vue] Vue의 기초(7) - UI 애니메이션 <transition>

이안92 2021. 4. 13. 12:01
반응형

 UI 애니메이션 <transition>

 

애니메이션 시작 전 class(start)를 디자인하고 동작 후 class(end)를 디자인한다. 그리고 원할 때 애니메이션 동작 후 class를 부착한다. 시작 전 class 명에 transition 속성을 주면 부드럽게 애니메이션이 완성된다.

 

CSS
<template>
  <div class="start" :class="{ end : modal }">
  <Modal @closeModal="modal = false;" :oneroom="oneroom" :clicked="clicked" :modal="modal" />
  </div>
</template>

<style>
.start {
  opacity: 0;
  transition: all 1s;
}
.end {
  opacity: 1;
}
</style>

먼저 애니메이션 주고싶은 요소를 <transition name="작명">으로 감싼다.

.작명-enter-from{시작스타일} .작명-enter-active{transition} .작명-enter-to{끝날때스타일}로 3개를 작성한다.

 

<transition> 태그 이용
<template>

  <transition name="fade">
    <Modal @closeModal="modal = false;" :oneroom="oneroom" :clicked="clicked" :modal="modal" />
  </transition>

</template>


<style>

.fade-enter-from {
  opacity: 0;
}

.fade-enter-active {
  transition: all 1s;
}

.fade-enter-to {
  opacity: 1;
}

</style>
.fade-enter-from {
  transform: translateY(-150px);
}
.fade-enter-active {
  transition: all 0.3s;
}
.fade-enter-to {
  transform: translateY(0px);
}

 

 동적 UI

 

먼저, UI 현재 상태를 데이터로 만든다. (0일때, 1일때, 2일때.. 이런식으로 화면이 다르게 나오게)

<script>
export default {
  name: 'App',
  data(){
    return {
      step: 0,
    }
  },
}
</script>

상태에 따라 HTML이 어떻게 보일지 정한다.

<template>
 <div v-if="step==0">내용0</div>
 <div v-if="step==1">내용1</div>
 <div v-if="step==2">내용2</div>
 <button @click="step = 0">버튼0</button>
 <button @click="step = 1">버튼1</button>
 <button @click="step = 2">버튼2</button>
</template>
반응형
Comments