Vue.js v3のtransitionで.v-enter
を設定し表示時にアニメーションを定義したかったけど、動かず軽くハマったので対応方法をメモ📝
事象
transitionでアニメーションを動かそうと思い以下のコンポーネントのような実装をしたが、開始アニメーションが動かなかった。
<script setup> const show = ref(false); </script> <template> <button @click="show = !show">toggle!</button> <Transition><p v-show="show">show!</p></Transition> </template> <style> .v-enter-active, .v-leave-active { transition: opacity 0.5s ease; } .v-enter, .v-leave-to { opacity: 0; } </style>
原因
Vue.js v3でtransitionで設定されるclassに破壊的変更があり、.v-enter
ではなく.v-enter-from
に変わった。
The v-enter transition class has been renamed to v-enter-from and the v-leave transition class has been renamed to v-leave-from.
対応
.v-enter-from
で適用するようにしたら解決!
- .v-enter, + .v-enter-from, .v-leave-to { opacity: 0; }
おわりに
transitionだとテストとかで気付けなさそうなのでVue.jsのアップデートとか注意ですね 😵