vue动画实现需要transition标签和class属性配合使用, 共有6个属性如下<br /> 入场动画class: v-enter, v-enter-active, v-enter-to<br /> 出场动画class: v-leave, v-leave-active, v-leave-to
<style> /* vue中的transition组件渲染时,会给子标签添加以下几个class,用于设置动画过程 */ /* 设置transition的入场(创建显示过程)动画 */ .v-enter{ /*入场开始状态*/ transform: translateY(300px); opacity: 0; } .v-enter-active{ /*入场过度的过程*/ transition: all 1s; } .v-enter-to{ /*入场结束状态*/ transform: translateY(0px); opacity: 1; } /* 设置transition的出场(销毁隐藏过程)动画 */ .v-leave{ /*出场开始状态*/ transform: translateY(00px); opacity: 1; } .v-leave-active{ /*出场过度的过程*/ transition: all 1s; } .v-leave-to{ /*出场结束状态*/ transform: translateY(300px); opacity: 0; } /* 设置h1单独的过度样式 */ .binge-enter, .binge-leave-to{ color: red; } .binge-enter-active, .binge-leave-active{ transition: 3s; } .binge-enter-to, .binge-leave{ color: black; } </style><body> <script src='https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js'></script> <div id='myApp'> <button @click="bool=!bool">显示/隐藏</button> <!-- 在通过v-if实现标签创建销毁时, 可以设置创建销毁时的过度效果 --> <transition> <h1 v-if="bool">李云迪嫖娼被抓,找张三做律师,会被判几年?</h1> </transition> <!-- transition有且只能有一个根标签,而且v-if条件必须设置在根标签上, 如果需要给多个标签设置动画, 需要在每一个标签外层添加transtion --> <transition> <div v-if="bool"> <h2>2</h2> <h2>2</h2> </div> </transition> <!-- 给某一个标签设置单独的过度效果, 可以给transition添加name 然后设置class时把v-前缀换成name前缀, 如 v-enter ==> binge-enter--> <transition name="binge"> <h1 v-if="bool">3333333333</h1> </transition> </div> <script> new Vue({ el: '#myApp', data: { bool: true }, methods: { } }) </script></body>