# Transition & Animation
λ·°λ λΌμ΄λΈλ¬λ¦¬ λ΄λΆμ μΌλ‘ νΈλμ§μ , μ λλ©μ΄μ κΈ°λ₯μ κ°κ³ μμ΅λλ€. κ·Έλμ κ°λ¨ν κ·μΉκ³Ό μμ±λ€λ§ μλ©΄ μ½κ² λ©μ§ μ λλ©μ΄μ ν¨κ³Όλ₯Ό μΆκ°ν μ μμ΅λλ€.
# νΈλμ§μ μμ
λ·° νΈλμ§μ μ½λλ₯Ό κ°λ¨ν μ΄ν΄λ³΄κ² μ΅λλ€.
<div>
<button @click="showComment">show</button>
<transiton name="fade">
<p v-if="status">This is a comment</p>
</transiton>
</div>
new Vue({
...
data: {
status: false
},
methods: {
showComment() {
this.status = true;
}
}
})
.fade-enter-active, .fade-leave-active {
transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
μ μ½λμμ show λ²νΌμ ν΄λ¦νλ©΄ This is a comment λΌλ ν
μ€νΈκ° λΆλλ½κ² μ΄λ©°μ νμλ©λλ€. μ¬κΈ°μ μ£Όλͺ©ν μ½λλ <transition>
μ΄λΌλ νκ·Έμ
λλ€.
<transition>
νκ·Έλ name
μμ±μ κ°κ³ μκ³ , ν΄λΉ name
μμ±κ³Ό μ°κ΄λ CSS μ½λκ° μμ μ μλμ΄ μμ΅λλ€. CSS μ½λμ λ°λΌμ ν
μ€νΈκ° νμλ λ opacityμ κ°μ΄ λ³νλκ³ , μ΄μ λ°λΌ μ΄λ©°μ λνλλ ν¨κ³Όλ₯Ό λ³Ό μκ° μμ΅λλ€.
# νΈλμ§μ ν΄λμ€
μμ μ½λμμ νΈλμ§μ
ν¨κ³Όκ° λνλ μ μμλ κ²μ λ°λ‘ νΈλμ§μ
νκ·Έμ name
μμ± λνμ
λλ€. name
μμ±μ λ§μΆ° μλμ κ°μ΄ CSS μ½λλ₯Ό ꡬννμμ΅λλ€.
<transition name="fade">
</transition>
.fade-enter-active, .fade-leave-active {
transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
fade-enter-active
, fade-leave-active
λ±μμ λ³Ό μ μλ―μ΄ λ·°μ νΈλμ§μ
CSS μ½λλ μΌμ ν κ·μΉμ
κ°μ΅λλ€. μ¬κΈ°μ μ¬μ©νλ CSS ν΄λμ€λ μλμ κ°μ΄ 6κ°κ° μμ΅λλ€.
μΌλ°μ μΌλ‘ v-enter
, v-leave-to
λ₯Ό ν¨κ» μ¬μ©νκ³ , v-enter-to
, v-leave
λ₯Ό ν¨κ» μ¬μ©ν©λλ€. κ·Έλ¦Όμ μκΉμ 보면 μ§ μ§μ΄μ Έμ μ ꡬλΆλμ΄ μμ΅λλ€.
β Navigation Guard Common Approach β