Language/Vue.js
[Vue] 부드러운 UI 애니메이션 효과 주기
JJcoding
2024. 5. 5. 20:19
모달창이 열릴 때 애니메이션 효과를 줘보자
기존 css로 만드는 법
<style>
.start {
opacity: 0;
Transition: all 1s;
}
.end {
opacity: 1;
}
--> style을 주고
<div class="start" :class="{ end : modalOpen }">
<Modal @closeModal="modalOpen=false;" :원룸들="원룸들" :누름="누름" :modalOpen="modalOpen" />
</div>
--> class명 넣어주면 끝!
class명을 조건부로 넣으려면 { 클래스명 : 조건 } 으로 사용하면 된다.
:class="{ end : modalOpen }"은 modalOpen이 true 면 end를 클래스명에 넣어라. 라는 의미가 된다.
Vue 에서는 <transition> 을 이용하면 애니메이션을 쉽게 줄 수 있다.
<transition name="fade">
<Modal @closeModal="modalOpen=false;" :원룸들="원룸들" :누름="누름" :modalOpen="modalOpen" />
</transition>
--> html에서 <transition name="작명"> 태그를 넣어준다. ( fade는 내가 작명한 것 )
<style>
.fade-enter-from {}
.fade-enter-active {}
.fade-enter-to {}
--> 스타일에서는 class명이 3개 필요하다. from은 시작 스타일, to는 끝 스타일, active는 transition을 넣어주면 된다.
.fade-enter-from {
opacity: 0;
}
.fade-enter-active {
transition: all 1s;
}
.fade-enter-to {
opacity: 1;
}
--> 이렇게 하면 위 css로 만든 애니메이션과 똑같은 애니메이션이 만들어진다.
퇴장 애니메이션(모달창이 닫힐 때)도 간단하게 만들 수 있다.
.fade-leave-from {
opacity: 1;
}
.fade-leave-active {
transition: all 1s;
}
.fade-leave-to {
opacity: 0;
}
--> 위 enter를 leave로 바꾸면 끝
출처 : 코딩애플